00001 #ifndef __si_sha_insteon_h__ea8e098a_f1c0_460d_8073_f9566af9d814
00002 #define __si_sha_insteon_h__ea8e098a_f1c0_460d_8073_f9566af9d814
00003
00011 #include <si_sys/defs.h>
00012
00018 typedef struct sc_insteonBridgeVersion {
00019 s_uint32 address_;
00020 s_uint8 category_;
00021 s_uint8 subcategory_;
00022 s_uint8 firmwareVersion_;
00023 s_uint8 reserved_;
00024 } sc_insteonBridgeVersion;
00025
00032 typedef struct sc_insteonLinkEntry {
00033 s_uint8 flags_;
00034 s_uint8 group_;
00035 s_uint32 address_;
00036 s_uint8 category_;
00037 s_uint8 subcategory_;
00038 s_uint8 firmwareVersion_;
00039 s_uint8 isEOL;
00040 s_uint8 reserved_[2];
00041 } sc_insteonLinkEntry;
00042
00045 typedef enum se_insteonConfigurationFlags {
00046 se_configFlag_autoLink = 0x80,
00047 se_configFlag_monitorMode = 0x40,
00048 se_configFlag_disableLED = 0x20,
00049 se_configFlag_autoTimeout = 0x10,
00050 se_configFlag_busyNAK = 0x08,
00051 } se_insteonConfigurationFlags;
00052
00060 typedef enum se_insteonCode {
00061
00062 se_insteonCode_stdInEvent = 0x50,
00063 se_insteonCode_extInEvent = 0x51,
00064 se_insteonCode_x10InEvent = 0x52,
00065 se_insteonCode_linkStatusEvent = 0x53,
00066 se_insteonCode_buttonEvent = 0x54,
00067 se_insteonCode_resetLinksEvent = 0x55,
00068 se_insteonCode_groupEvent = 0x56,
00069 se_insteonCode_linkData = 0x57,
00070 se_insteonCode_getVersion = 0x60,
00071 se_insteonCode_sendGroup = 0x61,
00072 se_insteonCode_sendMessage = 0x62,
00073 se_insteonCode_startLinking = 0x64,
00074 se_insteonCode_cancelLinking = 0x65,
00075 se_insteonCode_setDevice = 0x66,
00076 se_insteonCode_reset = 0x67,
00077 se_insteonCode_acq = 0x68,
00078 se_insteonCode_getFirstLink = 0x69,
00079 se_insteonCode_getNextLink = 0x6a,
00080 se_insteonCode_setConfiguration = 0x6b,
00081 se_insteonCode_getLinkData = 0x6c,
00082 se_insteonCode_ledOn = 0x6d,
00083 se_insteonCode_ledOff = 0x6e,
00084 se_insteonCode_manageLink = 0x6f,
00085 se_insteonCode_nak = 0x70,
00086 se_insteonCode_longAck = 0x71,
00087 se_insteonCode_sleep = 0x72,
00088 se_insteonCode_getConfiguration = 0x73,
00089
00090 } se_insteonCode;
00091
00094 #define MF_BCAST 0x80
00095 #define MF_NAK 0x80
00096 #define MF_GROUP 0x40
00097 #define MF_ACK 0x20
00098 #define MF_EXTM 0x10
00099
00100 #define MF_HOPSLEFT(v) ((v & 03) << 2)
00101 #define MF_MAXHOPS(v) (v & 03)
00102
00111 #define RC_DISCOVER 1
00112 #define RC_STDMESSAGE 2
00113 #define RC_EXTMESSAGE 3
00114 #define RC_GRPMESSAGE 4
00115 #define RC_GETVERSION 5
00116 #define RC_STDMSGWACK 6
00117 #define RC_RESETLINKS 7
00118
00126 #define INSTEON_NETID 0x01
00127
00132 #define aprint(b,a) \
00133 sprintf(b,"%02X-%02X-%02X-%02X",INSTEON_NETID,\
00134 (int)(((a)>>16)&0xFF),(int)(((a)>>8)&0xFF),(int)((a)&0xFF))
00135
00140 #define tprint(b,c,s) \
00141 sprintf(b,"%02X-%02X-%02X",INSTEON_NETID,(int)(c),(int)(s))
00142
00146 #define atou32(ah,am,al) ((s_uint32)( ((ah << 16) & 0x00FF0000) | \
00147 ((am << 8) & 0x0000FF00) | \
00148 (al & 0x000000FF) ))
00149
00150
00151 #endif