25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

359 lines
10 KiB

  1. /**********************************************************************
  2. Project: Automatic cat feeder
  3. Date: march 19 2006
  4. Author: Jean-François Martel
  5. Target: PIC 18F252
  6. Compiler: Microchip mcc18
  7. Filename: Protocol.h
  8. File description: Communication protocol implementation.
  9. jean-francois.martel@polymtl.ca
  10. **********************************************************************/
  11. #ifndef PROTOCOLDEFS_H
  12. #define PROTOCOLDEFS_H
  13. //Protocol buffer specific definitions
  14. #define MAX_BOOTLOADER_MESSAGE_SIZE 25
  15. #define MAX_MESSAGE_SIZE 300
  16. #define BOOTLOADER_MAX_MESSAGE_SIZE 50
  17. #define FRAME_HEADER 0x8A
  18. #define BOOTLOADER_HEADER 0xA8
  19. #define DATA_START 11
  20. #define PROTOCOL_ACK 0xA3
  21. #define PROTOCOL_NAK 0x90
  22. #define BROADCAST_VALUE 0xFF
  23. #define MASTER_RECONNECTION_TIMEOUT 25000 //Try to reconnect every 5s
  24. #define MASTER_RESPONSE_TIMEOUT 30000 //Wait max 30s for the master to respond...
  25. enum eFrameIndex
  26. {
  27. FRAME_HEADER_INDEX = 0,
  28. FRAME_SENDER_ADDRESS_INDEX,
  29. FRAME_SENDER_DEVICE_ID_INDEX,
  30. FRAME_DEST_DEVICE_ID_INDEX,
  31. FRAME_DEST_ADDRESS_INDEX,
  32. FRAME_FLAGS_INDEX,
  33. FRAME_COMMAND_INDEX,
  34. FRAME_SIZE1_INDEX,
  35. FRAME_SIZE2_INDEX,
  36. FRAME_SIZE3_INDEX,
  37. FRAME_SIZE4_INDEX,
  38. FRAME_DATA_INDEX,
  39. FRAME_INDEX_NBR
  40. };
  41. enum DEVICES_IDS
  42. {
  43. ID_MASTER, //Master Controller
  44. ID_CONSOLE, //LCD Console
  45. ID_PC, //PC
  46. ID_AV_MUX, //Audio Video Multiplexer
  47. ID_IR_REMOTE, //Infra red transmitter
  48. ID_DEADBOLT_DEVICE,
  49. ID_AV_RECEIVER,
  50. ID_SMS_CLIENT,
  51. ID_ETHERNET_VIRTUAL,
  52. ID_SPRINKLER_DEVICE,
  53. ID_SPRINKLER_INTERFACE,
  54. ID_DEADBOLT_INTERFACE,
  55. ID_AVRECEIVER_INTERFACE,
  56. ID_CHALET_INTERFACE,
  57. ID_CHALET_DEVICE,
  58. ID_ISPINDEL_INTERFACE,
  59. ID_LORA_INTERFACE_DEVICE,
  60. ID_LORA_INTERFACE_INTERFACE,
  61. ID_AVRECEIVER_CONSOLE_INTERFACE,
  62. ID_AVRECEIVER_CONSOLE_DEVICE,
  63. ID_NB_DEVICE_ID
  64. };
  65. // Commands definitions
  66. enum MASTER_CMD
  67. {
  68. RX_MASTER_GET_STATUS,
  69. TX_MASTER_STATUS,
  70. TX_MASTER_ACK,
  71. RX_MASTER_SET_NET_INFO,
  72. RX_MASTER_GET_NET_INFO,
  73. TX_MASTER_NET_INFO,
  74. RX_MASTER_SEND_DEVICE_CMD,
  75. TX_MASTER_SEND_DEVICE_CMD_ACK,
  76. RX_MASTER_SET_WEATHER_INFO,
  77. TX_MASTER_SET_WEATHER_INFO_ACK,
  78. RX_MASTER_SET_MAIL_MSG,
  79. TX_MASTER_SET_MAIL_MSG_ACK,
  80. RX_MASTER_NEW_OUTLOOK_EMAILS,
  81. TX_MASTER_NEW_OUTLOOK_EMAILS_ACK,
  82. RX_MASTER_TODAYS_EVENTS,
  83. TX_MASTER_TODAYS_EVENTS_ACK
  84. };
  85. //CONSOLE
  86. enum CONSOLE_CMD
  87. {
  88. RX_CONSOLE_GET_STATUS,
  89. TX_CONSOLE_STATUS,
  90. TX_CONSOLE_ACK,
  91. RX_START_CALIBRATION,
  92. RX_GET_CONSOLE_EVENT_MSG,
  93. TX_CONSOLE_EVENT_MSG,
  94. RX_CONSOLE_SHOW_CALLER_ID,
  95. RX_SET_TIME,
  96. RX_SET_WEATHER,
  97. RX_SEND_NEW_MAIL_MSG,
  98. RX_SEND_NEW_MAIL_MSG_ACK,
  99. RX_NEW_OUTLOOK_EMAILS,
  100. TX_NEW_OUTLOOK_EMAILS_ACK,
  101. RX_TODAYS_EVENTS,
  102. TX_TODAYS_EVENTS_ACK,
  103. LAST_CONSOLE_CMD
  104. };
  105. enum IR_REMOTE_CMDS
  106. {
  107. TX_IR_REMOTE_ACK = 1,
  108. RX_GET_STATUS,
  109. TX_REMOTE_STATUS,
  110. RX_TRANSMIT_CMD,
  111. RX_LEARN_IR_CMD,
  112. TX_LEARN_IR_CMD_FINISHED,
  113. RX_GET_IR_DATA,
  114. TX_SEND_IR_DATA,
  115. RX_SET_IR_CMD,
  116. RX_SET_IR_DATA,
  117. RX_GET_IR_CMD,
  118. TX_SEND_IR_CMD,
  119. MAX_IR_REMOTE_CMD
  120. };
  121. //The SMS remote interface commands
  122. enum SMS_CLIENT_CMDS
  123. {
  124. SMS_CLIENT_DEVICE_ACK = 1,
  125. SMS_CLIENT_DEVICE_STATUS_REQUEST,
  126. SMS_CLIENT_DEVICE_STATUS_RESPONSE,
  127. SMS_CLIENT_DEVICE_DID_INFO_REQUEST,
  128. SMS_CLIENT_DEVICE_DID_INFO_RESPONSE,
  129. SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST,
  130. SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE,
  131. SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION,
  132. SMS_CLIENT_DEVICE_SEND_SMS_REQUEST,
  133. SMS_CLIENT_DEVICE_SEND_SMS_ACK,
  134. SMS_CLIENT_DEVICE_GET_CONTACTS_REQUEST,
  135. SMS_CLIENT_DEVICE_GET_CONTACTS_RESPONSE,//12
  136. SMS_CLIENT_DEVICE_CONTACTS_CHANGED_NOTIFICATION,
  137. SMS_CLIENT_DEVICE_MAX_MSG
  138. };
  139. //The actual deadbolt device commands
  140. enum DEADBOLT_CMDS
  141. {
  142. DEADBOLT_DEVICE_ACK = 1,
  143. DEADBOLT_DEVICE_STATUS_REQUEST,
  144. DEADBOLT_DEVICE_STATUS_RESPONSE,
  145. DEADBOLT_DEVICE_GET_LOCKED_STATE_REQUEST,
  146. DEADBOLT_DEVICE_LOCKED_STATE_RESPONSE,
  147. DEADBOLT_DEVICE_GOTO_LOCKED_REQUEST,
  148. DEADBOLT_DEVICE_GOTO_LOCKED_ACK,
  149. DEADBOLT_DEVICE_GOTO_UNLOCKED_REQUEST,
  150. DEADBOLT_DEVICE_GOTO_UNLOCKED_ACK,
  151. DEADBOLT_DEVICE_GET_PASSWORDS_REQUEST,
  152. DEADBOLT_DEVICE_GET_PASSWORDS_RESPONSE,
  153. DEADBOLT_DEVICE_SET_PASSWORDS_REQUEST,
  154. DEADBOLT_DEVICE_SET_PASSWORDS_ACK,
  155. DEADBOLT_DEVICE_LOCK_EVENT,
  156. MAX_DEADBOLT_DEVICE_CMD
  157. };
  158. //The actual sprinkler module device commands
  159. enum SPRINKLER_DEVICE_CMDS
  160. {
  161. SPRINKLER_DEVICE_ACK = 1,
  162. SPRINKLER_DEVICE_STATUS_REQUEST,
  163. SPRINKLER_DEVICE_STATUS_RESPONSE,
  164. SPRINKLER_DEVICE_SET_SPRINKLER_STATE_REQUEST,
  165. SPRINKLER_DEVICE_SET_SPRINKLER_STATE_ACK,
  166. SPRINKLER_DEVICE_GET_SPRINKLER_STATE_REQUEST,
  167. SPRINKLER_DEVICE_GET_SPRINKLER_STATE_RESPONSE,
  168. SPRINKLER_DEVICE_GET_WATER_FLOW_REQUEST,
  169. SPRINKLER_DEVICE_GET_WATER_FLOW_RESPONSE,
  170. SPRINKLER_DEVICE_GET_MOISTURE_REQUEST,
  171. SPRINKLER_DEVICE_GET_MOISTURE_RESPONSE,
  172. SPRINKLER_DEVICE_SET_PROGRAM_REQUEST,
  173. SPRINKLER_DEVICE_SET_PROGRAM_ACK,
  174. SPRINKLER_DEVICE_GET_PROGRAM_REQUEST,
  175. SPRINKLER_DEVICE_GET_PROGRAM_RESPONSE,
  176. SPRINKLER_DEVICE_SET_PARAMETERS_REQUEST,
  177. SPRINKLER_DEVICE_SET_PARAMETERS_ACK,
  178. SPRINKLER_DEVICE_GET_PARAMETERS_REQUEST,
  179. SPRINKLER_DEVICE_GET_PARAMETERS_RESPONSE,
  180. MAX_SPRINKLER_DEVICE_CMD
  181. };
  182. //The sprinkler interface commands
  183. enum SPRINKLER_INTERFACE_CMDS
  184. {
  185. SPRINKLER_INTERFACE_ACK = 1,
  186. SPRINKLER_INTERFACE_STATUS_REQUEST,
  187. SPRINKLER_INTERFACE_STATUS_RESPONSE,
  188. SPRINKLER_INTERFACE_GET_SPRINKLERS_REQUEST,
  189. SPRINKLER_INTERFACE_GET_SPRINKLERS_RESPONSE,
  190. SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_REQUEST,
  191. SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_RESPONSE,
  192. SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_REQUEST,
  193. SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_ACK,
  194. SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_REQUEST,
  195. SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_RESPONSE,
  196. SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_REQUEST,
  197. SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_ACK,
  198. MAX_SPRINKLER_INTERFACE_CMD
  199. };
  200. enum ETHERNET_NETWORK_VIRTUAL_CMDS
  201. {
  202. ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0,
  203. ETH_NETWK_DEVICE_INFO_RESPONSE,
  204. ETH_NETWK_SET_DEVICE_INFO_ACK,
  205. ETH_NETWK_CONNECTION_REFUSED,
  206. MAX_ETHERNET_NETWORK_VIRTUAL_CMDS
  207. };
  208. enum AV_RECEIVER_INTERFACE_CMDS
  209. {
  210. AV_RECEIVER_INTERFACE_ACK = 1,
  211. AV_RECEIVER_INTERFACE_GENERAL_STATUS_REQUEST,
  212. AV_RECEIVER_INTERFACE_GENERAL_STATUS_RESPONSE,
  213. AV_RECEIVER_INTERFACE_SET_MAIN_POWER_REQUEST,
  214. AV_RECEIVER_INTERFACE_SET_MAIN_POWER_RESPONSE,
  215. AV_RECEIVER_INTERFACE_SET_ZONE2_REQUEST,
  216. AV_RECEIVER_INTERFACE_SET_ZONE2_RESPONSE,
  217. AV_RECEIVER_INTERFACE_SET_MAIN_ZONE_REQUEST,
  218. AV_RECEIVER_INTERFACE_SET_MAIN_ZONE_RESPONSE,
  219. AV_RECEIVER_INTERFACE_SET_SPEAKERS_REQUEST,
  220. AV_RECEIVER_INTERFACE_SET_SPEAKERS_RESPONSE,
  221. AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_REQUEST,
  222. AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_RESPONSE,
  223. AV_RECEIVER_INTERFACE_SELECT_SCENE_REQUEST,
  224. AV_RECEIVER_INTERFACE_SELECT_SCENE_RESPONSE,
  225. AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_REQUEST,
  226. AV_RECEIVER_INTERFACE_SET_MAIN_VOLUME_RESPONSE,
  227. AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_REQUEST,
  228. AV_RECEIVER_INTERFACE_SET_ZONE2_VOLUME_RESPONSE,
  229. AV_RECEIVER_INTERFACE_SET_ZONE2_INPUT_REQUEST,
  230. AV_RECEIVER_INTERFACE_SET_ZONE2_INPUT_RESPONSE,
  231. AV_RECEIVER_INTERFACE_SET_SYNC_Z2_WITH_Z1_REQUEST,
  232. AV_RECEIVER_INTERFACE_SET_SYNC_Z2_WITH_Z1_RESPONSE,
  233. MAX_AV_RECEIVER_INTERFACE_CMD
  234. };
  235. enum CHALET_INTERFACE_CMDS
  236. {
  237. CHALET_INTERFACE_ACK = 1,
  238. CHALET_INTERFACE_GENERAL_STATUS_REQUEST,
  239. CHALET_INTERFACE_GENERAL_STATUS_RESPONSE,
  240. CHALET_INTERFACE_AC_POWER_STATE_STATUS_REQUEST,
  241. CHALET_INTERFACE_AC_POWER_STATE_STATUS_RESPONSE,
  242. CHALET_INTERFACE_AC_POWER_SET_STATE_REQUEST,
  243. CHALET_INTERFACE_AC_POWER_SET_STATE_RESPONSE,
  244. CHALET_INTERFACE_BATTERY_VOLTAGE_REQUEST,
  245. CHALET_INTERFACE_BATTERY_VOLTAGE_RESPONSE,
  246. MAX_CHALET_INTERFACE_CMD
  247. };
  248. enum CHALET_CMDS
  249. {
  250. CHALET_ACK = 1,
  251. CHALET_GENERAL_STATUS_REQUEST,
  252. CHALET_GENERAL_STATUS_RESPONSE,
  253. CHALET_AC_POWER_STATE_STATUS_REQUEST,
  254. CHALET_AC_POWER_STATE_STATUS_RESPONSE,
  255. CHALET_AC_POWER_SET_STATE_REQUEST,
  256. CHALET_AC_POWER_SET_STATE_RESPONSE,
  257. CHALET_BATTERY_VOLTAGE_REQUEST,
  258. CHALET_BATTERY_VOLTAGE_RESPONSE,
  259. CHALET_BATTERY_CURRENT_REQUEST,
  260. CHALET_BATTERY_CURRENT_RESPONSE,
  261. CHALET_WIFI_STATUS_REQUEST,
  262. CHALET_WIFI_STATUS_RESPONSE,
  263. CHALET_WIFI_SET_STATE_REQUEST,
  264. CHALET_WIFI_SET_STATE_RESPONSE,
  265. CHALET_DO_HARAKIRI_REQUEST,
  266. CHALET_DO_HARAKIRI_CONFIRMATION,
  267. CHALET_REBOOT_CPU_REQUEST,
  268. CHALET_REBOOT_CPU_RESPONSE,
  269. CHALET_GET_STORED_WIFI_SETTINGS_REQUEST,
  270. CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,
  271. CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,
  272. CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,
  273. CHALET_GET_FIRMWARE_VERSION_REQUEST,
  274. CHALET_GET_FIRMWARE_VERSION_RESPONSE,
  275. CHALET_CLEAR_COMMS_STATISTICS_REQUEST,
  276. CHALET_CLEAR_COMMS_STATISTICS_RESPONSE,
  277. CHALET_REGISTER_FRIENDLY_DEVICE_REQUEST,
  278. CHALET_REGISTER_FRIENDLY_DEVICE_RESPONSE,
  279. CHALET_FWD_DEVICE_MESSAGE_REQUEST,
  280. CHALET_FWD_DEVICE_MESSAGE_RESPONSE,
  281. MAX_CHALET_CMD
  282. };
  283. enum BOOTLOADER_CMDS
  284. {
  285. BOOTLOADER_ACK = 1,
  286. BOOTLOADER_HEARTBEAT_REQUEST,
  287. BOOTLOADER_HEARTBEAT_RESPONSE,
  288. BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST,
  289. BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESPONSE,
  290. BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE,
  291. BOOTLOADER_INIT_UPLOAD_REQUEST,
  292. BOOTLOADER_INIT_UPLOAD_RESPONSE,
  293. BOOTLOADER_GET_STATE_REQUEST,
  294. BOOTLOADER_GET_STATE_RESPONSE,
  295. BOOTLOADER_READY_FOR_DATA_RESPONSE,
  296. BOOTLOADER_SEND_DATA_CHUNK_REQUEST,
  297. BOOTLOADER_SEND_DATA_CHUNK_RESPONSE,
  298. BOOTLOADER_UPLOAD_FINISHED_REQUEST,
  299. BOOTLOADER_UPLOAD_FINISHED_RESPONSE,
  300. BOOTLOADER_EXECUTE_UPGRAGE_REQUEST,
  301. BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
  302. BOOTLOADER_ABORT_OPERATION_REQUEST,
  303. BOOTLOADER_ABORT_OPERATION_RESPONSE,
  304. BOOTLOADER_SEND_FLASH_DATA_REQUEST,
  305. BOOTLOADER_SEND_FLASH_DATA_RESPONSE,
  306. BOOTLOADER_SEND_FLASH_DATA_CHUNK,
  307. BOOTLOADER_SEND_FLASH_DATA_CHUNK_RESPONSE,
  308. BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST,
  309. BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,
  310. BOOTLOADER_GET_STORED_FIRMWARE_INFO_REQUEST,
  311. BOOTLOADER_GET_STORED_FIRMWARE_INFO_RESPONSE,
  312. MAX_BOOTLOADER_CMD
  313. };
  314. #endif