00001 #ifndef __si_sha_abrgdev_h__fa579d1b_b6fa_4ea9_a9ce_a183389fc416
00002 #define __si_sha_abrgdev_h__fa579d1b_b6fa_4ea9_a9ce_a183389fc416
00003
00021 #include <si_std/queuet.h>
00022 #include <si_sha/abrgcmn.h>
00023 #include <si_sha/autodev.h>
00024
00025 #include <unistd.h>
00026
00027 typedef struct sc_automationDeviceMgr sc_automationDeviceMgr;
00028
00029
00032 sm_queueDecl(sc_automationPacketPtrh);
00033
00034
00038 typedef sc_status (*sc_automationBridgeDevice_newPacketF)(void* br,
00039 sc_automationPacketPtrh* pkt);
00040 typedef sc_status (*sc_automationBridgeDevice_processEventF)(void* br,
00041 sc_automationPacket* evt);
00042 typedef sc_status (*sc_automationBridgeDevice_processRequestF)(void* br,
00043 sc_automationRequest* req,
00044 sc_automationResponse* res);
00045 typedef sc_status (*sc_automationBridgeDevice_discoverF)(void* br);
00052 typedef struct sc_automationBridgeDevice_vtable {
00053 sc_automationBridgeDevice_processEventF processEvent;
00054 sc_automationBridgeDevice_processRequestF processRequest;
00055 sc_automationBridgeDevice_newPacketF newPacket;
00056 sc_automationBridgeDevice_discoverF discover;
00057 } sc_automationBridgeDevice_vtable;
00058
00073 struct sc_automationBridgeDevice {
00074 sc_automationDevice base_;
00076
00077 const sc_automationBridgeDevice_vtable* vtbl_;
00078 void* instance_;
00081 se_bridgeState state_;
00083 pthread_mutex_t mux_;
00084 pthread_t svcThread_;
00086 sc_automationPacketPtrh xchg_;
00089 sc_automationDeviceMgr* pdm_;
00090 int fd_;
00091 int fdCtlC_;
00092 int fdCtlS_;
00093 };
00094
00095 sc_status sc_automationBridgeDevice_construct(
00096 sc_automationBridgeDevice* pbd,
00097 sc_automationDeviceMgr* pdm,
00098 const TCHAR* name,
00099 const TCHAR* type,
00100 const TCHAR* addr,
00101 const TCHAR* networkType,
00102 const sc_automationBridgeDevice_vtable* vtbl,
00103 void* instance);
00120 sc_status sc_automationBridgeDevice_destruct(sc_automationBridgeDevice* pbd);
00125 sc_status sc_automationBridgeDevice_newPacket(sc_automationBridgeDevice* pbd,
00126 sc_automationPacketPtrh* pptrh);
00137 sc_status sc_automationBridgeDevice_discover(sc_automationBridgeDevice* pbd);
00146 sc_status sc_automationBridgeDevice_sendMessage(
00147 sc_automationBridgeDevice* pbd,
00148 sc_automationPacket* msg,
00149 sc_automationPacketPtrh* res);
00162 #endif