00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00039 #include "plugin.h"
00040 #include "NoninCom.h"
00041
00043 cbmachine ww;
00044 HWND HScol = NULL;
00045
00047 int OBJNONINSCOL;
00048
00049
00050 int SCOL_NONIN_CONNECTED_CB = 0;
00051 int NONIN_CONNECTED_CB;
00052
00053
00054 int SCOL_NONIN_DISCONNECTED_CB = 1;
00055 int NONIN_DISCONNECTED_CB;
00056
00057
00058 int SCOL_NONIN_HR_CB = 2;
00059 int NONIN_HR_CB;
00060
00061
00062 int SCOL_NONIN_SPO2_CB = 3;
00063 int NONIN_SPO2_CB;
00064
00065
00066 int SCOL_NONIN_SNSA_CB = 4;
00067 int NONIN_SNSA_CB;
00068
00069 extern std::list<NoninCom*> noninList ;
00070
00072 int destroyNoninObj(mmachine m, int handsys, int NoninTab)
00073 {
00074 NoninCom* NoninComObj = (NoninCom*) MMfetch(m, MTOP(NoninTab), 0);
00075 if (NoninComObj == NULL) {
00076 MMset(m, 0, NIL);
00077 return 0;
00078 }
00079 SAFE_DELETE(NoninComObj);
00080 MMstore(m, MTOP(NoninTab), 0, NULL);
00081 return 0;
00082 }
00083
00084
00093 int _CRNonin(mmachine m)
00094 {
00095 #ifdef _SCOL_DEBUG_
00096 MMechostr(MSKDEBUG,"_CRNonin\n");
00097 #endif
00098
00099
00100 int channel = MMget(m, 0);
00101
00102 if (channel == NIL) {
00103 MMechostr(MSKDEBUG, "Channel NIL\n");
00104 MMpull(m);
00105 MMpush(m, NIL);
00106 return 0;
00107 }
00108
00109 NoninCom * newNoninCom = new NoninCom();
00110 int noninComTab = MMmalloc(m,1,TYPETAB) ;
00111 if ( noninComTab == NIL )
00112 {
00113 SAFE_DELETE(newNoninCom) ;
00114 MMpull(m);
00115 return MMpush(m, NIL);
00116 }
00117
00118 MMstore( m, noninComTab, 0, (int)newNoninCom ) ;
00119 MMpush(m, PTOM( noninComTab )) ;
00120
00121 int k = 0;
00122 k = OBJcreate(m, OBJNONINSCOL, (int)newNoninCom, -1, -1);
00123
00124 #ifdef _SCOL_DEBUG_
00125 MMechostr(MSKDEBUG,"ok\n");
00126 #endif
00127
00128 return k ;
00129 }
00130
00131
00140 int _DSNonin (mmachine m)
00141 {
00142 #ifdef _SCOL_DEBUG_
00143 MMechostr(MSKDEBUG,"_DSNonin\n");
00144 #endif
00145
00146 int noninComTab = MMget(m, 0);
00147 if (noninComTab == NIL) {
00148 MMechostr(MSKDEBUG,"ObjNonin NIL\n");
00149 MMset(m, 0, -1);
00150 return 0;
00151 }
00152 OBJdelTM(m, OBJNONINSCOL, noninComTab);
00153 MMset(m, 0, 0);
00154
00155 #ifdef _SCOL_DEBUG_
00156 MMechostr(MSKDEBUG,"ok\n");
00157 #endif
00158 return 0;
00159 }
00160
00161
00173 int _CBNoninConnected(mmachine m)
00174 {
00175 return OBJaddreflex(m, OBJNONINSCOL, SCOL_NONIN_CONNECTED_CB);
00176 }
00177 int getNoninConnectedCb(mmachine m,HWND h,unsigned msg,UINT id,LONG param,int *ret)
00178 {
00179 int k = 0;
00180 NoninCom* NoninComObj =(NoninCom*) id;
00181
00182
00183 if (OBJbeginreflex(m, OBJNONINSCOL, (int)NoninComObj, SCOL_NONIN_CONNECTED_CB))
00184 return 0;
00185 if ((k=OBJcallreflex(m, 0))) return k;
00186 return k;
00187 }
00188
00189
00201 int _CBNoninDisconnected(mmachine m)
00202 {
00203 return OBJaddreflex(m, OBJNONINSCOL, SCOL_NONIN_DISCONNECTED_CB);
00204 }
00205 int getNoninDisconnectedCb(mmachine m,HWND h,unsigned msg,UINT id,LONG param,int *ret)
00206 {
00207 int k = 0;
00208 NoninCom* NoninComObj =(NoninCom*) id;
00209
00210
00211 if (OBJbeginreflex(m, OBJNONINSCOL, (int)NoninComObj, SCOL_NONIN_DISCONNECTED_CB))
00212 return 0;
00213 if ((k=OBJcallreflex(m, 0))) return k;
00214 return k;
00215 }
00216
00217
00229 int _CBNoninHR(mmachine m)
00230 {
00231 return OBJaddreflex(m, OBJNONINSCOL, SCOL_NONIN_HR_CB);
00232 }
00233 int getNoninHRCb(mmachine m,HWND h,unsigned msg,UINT id,LONG param,int *ret)
00234 {
00235 int k = 0;
00236 NoninCom* NoninComObj =(NoninCom*) id;
00237
00238
00239 if (OBJbeginreflex(m, OBJNONINSCOL, (int)NoninComObj, SCOL_NONIN_HR_CB))
00240 return 0;
00241 MMpush(m, ITOM(param));
00242 if ((k=OBJcallreflex(m, 1))) return k;
00243 return k;
00244 }
00245
00246
00258 int _CBNoninSPO2(mmachine m)
00259 {
00260 return OBJaddreflex(m, OBJNONINSCOL, SCOL_NONIN_SPO2_CB);
00261 }
00262 int getNoninSPO2Cb(mmachine m,HWND h,unsigned msg,UINT id,LONG param,int *ret)
00263 {
00264 int k = 0;
00265 NoninCom* NoninComObj =(NoninCom*) id;
00266
00267
00268 if (OBJbeginreflex(m, OBJNONINSCOL, (int)NoninComObj, SCOL_NONIN_SPO2_CB))
00269 return 0;
00270 MMpush(m, ITOM(param));
00271 if ((k=OBJcallreflex(m, 1))) return k;
00272 return k;
00273 }
00274
00275
00287 int _CBNoninSNSA(mmachine m)
00288 {
00289 return OBJaddreflex(m, OBJNONINSCOL, SCOL_NONIN_SNSA_CB);
00290 }
00291 int getNoninSNSACb(mmachine m,HWND h,unsigned msg,UINT id,LONG param,int *ret)
00292 {
00293 int k = 0;
00294 NoninCom* NoninComObj =(NoninCom*) id;
00295
00296
00297 if (OBJbeginreflex(m, OBJNONINSCOL, (int)NoninComObj, SCOL_NONIN_SNSA_CB))
00298 return 0;
00299 if ((k=OBJcallreflex(m, 0))) return k;
00300 return k;
00301 }
00302
00303
00305 #define NbNoninPKG 8
00306
00307
00311 char *NoninName[NbNoninPKG] =
00312 {
00313 "ObjNonin",
00314 "_CRNonin",
00315 "_DSNonin",
00316 "_CBNoninConnected",
00317 "_CBNoninDisconnected",
00318 "_CBNoninHR",
00319 "_CBNoninSPO2",
00320 "_CBNoninSNSA"
00321 };
00322
00323
00327 int (*NoninFunc[NbNoninPKG])(mmachine m)=
00328 {
00329 NULL,
00330 _CRNonin,
00331 _DSNonin,
00332 _CBNoninConnected,
00333 _CBNoninDisconnected,
00334 _CBNoninHR,
00335 _CBNoninSPO2,
00336 _CBNoninSNSA
00337 };
00338
00339
00343 int NoninNArg[NbNoninPKG]=
00344 {
00345 TYPTYPE,
00346 1,
00347 1,
00348 3,
00349 3,
00350 3,
00351 3,
00352 3,
00353 };
00354
00355
00359 char* NoninType[NbNoninPKG]=
00360 {
00361 NULL,
00362 "fun [Chn] ObjNonin",
00363 "fun [ObjNonin] I",
00364 "fun [ObjNonin fun [ObjNonin u0] u1 u0] ObjNonin",
00365 "fun [ObjNonin fun [ObjNonin u0] u1 u0] ObjNonin",
00366 "fun [ObjNonin fun [ObjNonin u0 I] u1 u0] ObjNonin",
00367 "fun [ObjNonin fun [ObjNonin u0 I] u1 u0] ObjNonin",
00368 "fun [ObjNonin fun [ObjNonin u0] u1 u0] ObjNonin",
00369 };
00370
00371
00372 void cleanDirtyConnection()
00373 {
00374 std::list<NoninCom*>::iterator iNoninList = noninList.begin();
00375 while (iNoninList != noninList.begin())
00376 {
00377 (*iNoninList)->disconnect();
00378 iNoninList++;
00379 }
00380 }
00381
00382
00383
00385
00390 int LoadNonin(mmachine m)
00391 {
00392 int k;
00393 HScol = (HWND)SCgetExtra("hscol");
00394
00395
00396 OBJNONINSCOL = OBJregister( 5, 1, destroyNoninObj, "OBJNONINSCOL" );
00397
00398
00399 NONIN_CONNECTED_CB = OBJgetUserEvent() ;
00400 OBJdefEvent( NONIN_CONNECTED_CB, (int (__cdecl *)(struct Mmachine *,int,unsigned int,int,int,int *))getNoninConnectedCb );
00401
00402 NONIN_DISCONNECTED_CB = OBJgetUserEvent() ;
00403 OBJdefEvent( NONIN_DISCONNECTED_CB, (int (__cdecl *)(struct Mmachine *,int,unsigned int,int,int,int *))getNoninDisconnectedCb);
00404
00405 NONIN_HR_CB = OBJgetUserEvent() ;
00406 OBJdefEvent( NONIN_HR_CB, (int (__cdecl *)(struct Mmachine *,int,unsigned int,int,int,int *))getNoninHRCb);
00407
00408 NONIN_SPO2_CB = OBJgetUserEvent() ;
00409 OBJdefEvent( NONIN_SPO2_CB, (int (__cdecl *)(struct Mmachine *,int,unsigned int,int,int,int *))getNoninSPO2Cb);
00410
00411 NONIN_SNSA_CB = OBJgetUserEvent() ;
00412 OBJdefEvent( NONIN_SNSA_CB, (int (__cdecl *)(struct Mmachine *,int,unsigned int,int,int,int *))getNoninSNSACb);
00413
00414 k = PKhardpak(m, "NoninEngine", NbNoninPKG, NoninName, NoninFunc, NoninNArg, NoninType);
00415
00416 return k;
00417 }
00418
00419
00421
00422
00427 extern "C" __declspec (dllexport) int SCOLloadNONIN(mmachine m, cbmachine w)
00428 {
00429 SCOLinitplugin(w);
00430 MMechostr(MSKDEBUG,"SCOLloadNONIN trying loading nonin DLL ...\n");
00431 LoadNonin(m);
00432 return 0;
00433 }
00434
00435
00440 extern "C" __declspec (dllexport) int SCOLfreeNONIN()
00441 {
00442 cleanDirtyConnection() ;
00443 MMechostr(MSKDEBUG,"\nRelease NONIN DLL\n");
00444 MMechostr(MSKDEBUG, "------ ..NONIN DLL CLOSED\n\n" );
00445 return 0;
00446 }