You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

345 lines
9.7 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_BOOTLOADER_VIRTUAL,
  59. ID_NB_DEVICE_ID
  60. };
  61. // Commands definitions
  62. enum MASTER_CMD
  63. {
  64. RX_MASTER_GET_STATUS,
  65. TX_MASTER_STATUS,
  66. TX_MASTER_ACK,
  67. RX_MASTER_SET_NET_INFO,
  68. RX_MASTER_GET_NET_INFO,
  69. TX_MASTER_NET_INFO,
  70. RX_MASTER_SEND_DEVICE_CMD,
  71. TX_MASTER_SEND_DEVICE_CMD_ACK,
  72. RX_MASTER_SET_WEATHER_INFO,
  73. TX_MASTER_SET_WEATHER_INFO_ACK,
  74. RX_MASTER_SET_MAIL_MSG,
  75. TX_MASTER_SET_MAIL_MSG_ACK,
  76. RX_MASTER_NEW_OUTLOOK_EMAILS,
  77. TX_MASTER_NEW_OUTLOOK_EMAILS_ACK,
  78. RX_MASTER_TODAYS_EVENTS,
  79. TX_MASTER_TODAYS_EVENTS_ACK
  80. };
  81. //CONSOLE
  82. enum CONSOLE_CMD
  83. {
  84. RX_CONSOLE_GET_STATUS,
  85. TX_CONSOLE_STATUS,
  86. TX_CONSOLE_ACK,
  87. RX_START_CALIBRATION,
  88. RX_GET_CONSOLE_EVENT_MSG,
  89. TX_CONSOLE_EVENT_MSG,
  90. RX_CONSOLE_SHOW_CALLER_ID,
  91. RX_SET_TIME,
  92. RX_SET_WEATHER,
  93. RX_SEND_NEW_MAIL_MSG,
  94. RX_SEND_NEW_MAIL_MSG_ACK,
  95. RX_NEW_OUTLOOK_EMAILS,
  96. TX_NEW_OUTLOOK_EMAILS_ACK,
  97. RX_TODAYS_EVENTS,
  98. TX_TODAYS_EVENTS_ACK,
  99. LAST_CONSOLE_CMD
  100. };
  101. enum IR_REMOTE_CMDS
  102. {
  103. TX_IR_REMOTE_ACK = 1,
  104. RX_GET_STATUS,
  105. TX_REMOTE_STATUS,
  106. RX_TRANSMIT_CMD,
  107. RX_LEARN_IR_CMD,
  108. TX_LEARN_IR_CMD_FINISHED,
  109. RX_GET_IR_DATA,
  110. TX_SEND_IR_DATA,
  111. RX_SET_IR_CMD,
  112. RX_SET_IR_DATA,
  113. RX_GET_IR_CMD,
  114. TX_SEND_IR_CMD,
  115. MAX_IR_REMOTE_CMD
  116. };
  117. //The SMS remote interface commands
  118. enum SMS_CLIENT_CMDS
  119. {
  120. SMS_CLIENT_DEVICE_ACK = 1,
  121. SMS_CLIENT_DEVICE_STATUS_REQUEST,
  122. SMS_CLIENT_DEVICE_STATUS_RESPONSE,
  123. SMS_CLIENT_DEVICE_DID_INFO_REQUEST,
  124. SMS_CLIENT_DEVICE_DID_INFO_RESPONSE,
  125. SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST,
  126. SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE,
  127. SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION,
  128. SMS_CLIENT_DEVICE_SEND_SMS_REQUEST,
  129. SMS_CLIENT_DEVICE_SEND_SMS_ACK,
  130. SMS_CLIENT_DEVICE_GET_CONTACTS_REQUEST,
  131. SMS_CLIENT_DEVICE_GET_CONTACTS_RESPONSE,//12
  132. SMS_CLIENT_DEVICE_CONTACTS_CHANGED_NOTIFICATION,
  133. SMS_CLIENT_DEVICE_MAX_MSG
  134. };
  135. //The actual deadbolt device commands
  136. enum DEADBOLT_CMDS
  137. {
  138. DEADBOLT_DEVICE_ACK = 1,
  139. DEADBOLT_DEVICE_STATUS_REQUEST,
  140. DEADBOLT_DEVICE_STATUS_RESPONSE,
  141. DEADBOLT_DEVICE_GET_LOCKED_STATE_REQUEST,
  142. DEADBOLT_DEVICE_LOCKED_STATE_RESPONSE,
  143. DEADBOLT_DEVICE_GOTO_LOCKED_REQUEST,
  144. DEADBOLT_DEVICE_GOTO_LOCKED_ACK,
  145. DEADBOLT_DEVICE_GOTO_UNLOCKED_REQUEST,
  146. DEADBOLT_DEVICE_GOTO_UNLOCKED_ACK,
  147. DEADBOLT_DEVICE_GET_PASSWORDS_REQUEST,
  148. DEADBOLT_DEVICE_GET_PASSWORDS_RESPONSE,
  149. DEADBOLT_DEVICE_SET_PASSWORDS_REQUEST,
  150. DEADBOLT_DEVICE_SET_PASSWORDS_ACK,
  151. DEADBOLT_DEVICE_LOCK_EVENT,
  152. MAX_DEADBOLT_DEVICE_CMD
  153. };
  154. //The actual sprinkler module device commands
  155. enum SPRINKLER_DEVICE_CMDS
  156. {
  157. SPRINKLER_DEVICE_ACK = 1,
  158. SPRINKLER_DEVICE_STATUS_REQUEST,
  159. SPRINKLER_DEVICE_STATUS_RESPONSE,
  160. SPRINKLER_DEVICE_SET_SPRINKLER_STATE_REQUEST,
  161. SPRINKLER_DEVICE_SET_SPRINKLER_STATE_ACK,
  162. SPRINKLER_DEVICE_GET_SPRINKLER_STATE_REQUEST,
  163. SPRINKLER_DEVICE_GET_SPRINKLER_STATE_RESPONSE,
  164. SPRINKLER_DEVICE_GET_WATER_FLOW_REQUEST,
  165. SPRINKLER_DEVICE_GET_WATER_FLOW_RESPONSE,
  166. SPRINKLER_DEVICE_GET_MOISTURE_REQUEST,
  167. SPRINKLER_DEVICE_GET_MOISTURE_RESPONSE,
  168. SPRINKLER_DEVICE_SET_PROGRAM_REQUEST,
  169. SPRINKLER_DEVICE_SET_PROGRAM_ACK,
  170. SPRINKLER_DEVICE_GET_PROGRAM_REQUEST,
  171. SPRINKLER_DEVICE_GET_PROGRAM_RESPONSE,
  172. SPRINKLER_DEVICE_SET_PARAMETERS_REQUEST,
  173. SPRINKLER_DEVICE_SET_PARAMETERS_ACK,
  174. SPRINKLER_DEVICE_GET_PARAMETERS_REQUEST,
  175. SPRINKLER_DEVICE_GET_PARAMETERS_RESPONSE,
  176. MAX_SPRINKLER_DEVICE_CMD
  177. };
  178. //The sprinkler interface commands
  179. enum SPRINKLER_INTERFACE_CMDS
  180. {
  181. SPRINKLER_INTERFACE_ACK = 1,
  182. SPRINKLER_INTERFACE_STATUS_REQUEST,
  183. SPRINKLER_INTERFACE_STATUS_RESPONSE,
  184. SPRINKLER_INTERFACE_GET_SPRINKLERS_REQUEST,
  185. SPRINKLER_INTERFACE_GET_SPRINKLERS_RESPONSE,
  186. SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_REQUEST,
  187. SPRINKLER_INTERFACE_GET_SPRINKLER_DATA_RESPONSE,
  188. SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_REQUEST,
  189. SPRINKLER_INTERFACE_SET_SPRINKLER_DATA_ACK,
  190. SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_REQUEST,
  191. SPRINKLER_INTERFACE_GET_SPRINKLER_STATE_RESPONSE,
  192. SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_REQUEST,
  193. SPRINKLER_INTERFACE_SET_SPRINKLER_STATE_ACK,
  194. MAX_SPRINKLER_INTERFACE_CMD
  195. };
  196. enum ETHERNET_NETWORK_VIRTUAL_CMDS
  197. {
  198. ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0,
  199. ETH_NETWK_DEVICE_INFO_RESPONSE,
  200. ETH_NETWK_SET_DEVICE_INFO_ACK,
  201. ETH_NETWK_CONNECTION_REFUSED,
  202. MAX_ETHERNET_NETWORK_VIRTUAL_CMDS
  203. };
  204. enum AV_RECEIVER_INTERFACE_CMDS
  205. {
  206. AV_RECEIVER_INTERFACE_ACK = 1,
  207. AV_RECEIVER_INTERFACE_GENERAL_STATUS_REQUEST,
  208. AV_RECEIVER_INTERFACE_GENERAL_STATUS_RESPONSE,
  209. AV_RECEIVER_INTERFACE_SET_MAIN_POWER_REQUEST,
  210. AV_RECEIVER_INTERFACE_SET_MAIN_POWER_RESPONSE,
  211. AV_RECEIVER_INTERFACE_SET_SPEAKERB_REQUEST,
  212. AV_RECEIVER_INTERFACE_SET_SPEAKERB_RESPONSE,
  213. AV_RECEIVER_INTERFACE_SET_SPEAKERA_REQUEST,
  214. AV_RECEIVER_INTERFACE_SET_SPEAKERA_RESPONSE,
  215. AV_RECEIVER_INTERFACE_SET_SPEAKERS_REQUEST,
  216. AV_RECEIVER_INTERFACE_SET_SPEAKERS_RESPONSE,
  217. AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_REQUEST,
  218. AV_RECEIVER_INTERFACE_SEND_DIRECT_CMD_RESPONSE,
  219. MAX_AV_RECEIVER_INTERFACE_CMD
  220. };
  221. enum CHALET_INTERFACE_CMDS
  222. {
  223. CHALET_INTERFACE_ACK = 1,
  224. CHALET_INTERFACE_GENERAL_STATUS_REQUEST,
  225. CHALET_INTERFACE_GENERAL_STATUS_RESPONSE,
  226. CHALET_INTERFACE_AC_POWER_STATE_STATUS_REQUEST,
  227. CHALET_INTERFACE_AC_POWER_STATE_STATUS_RESPONSE,
  228. CHALET_INTERFACE_AC_POWER_SET_STATE_REQUEST,
  229. CHALET_INTERFACE_AC_POWER_SET_STATE_RESPONSE,
  230. CHALET_INTERFACE_BATTERY_VOLTAGE_REQUEST,
  231. CHALET_INTERFACE_BATTERY_VOLTAGE_RESPONSE,
  232. MAX_CHALET_INTERFACE_CMD
  233. };
  234. enum CHALET_CMDS
  235. {
  236. CHALET_ACK = 1,
  237. CHALET_GENERAL_STATUS_REQUEST,
  238. CHALET_GENERAL_STATUS_RESPONSE,
  239. CHALET_AC_POWER_STATE_STATUS_REQUEST,
  240. CHALET_AC_POWER_STATE_STATUS_RESPONSE,
  241. CHALET_AC_POWER_SET_STATE_REQUEST,
  242. CHALET_AC_POWER_SET_STATE_RESPONSE,
  243. CHALET_BATTERY_VOLTAGE_REQUEST,
  244. CHALET_BATTERY_VOLTAGE_RESPONSE,
  245. CHALET_BATTERY_CURRENT_REQUEST,
  246. CHALET_BATTERY_CURRENT_RESPONSE,
  247. CHALET_WIFI_STATUS_REQUEST,
  248. CHALET_WIFI_STATUS_RESPONSE,
  249. CHALET_WIFI_SET_STATE_REQUEST,
  250. CHALET_WIFI_SET_STATE_RESPONSE,
  251. CHALET_DO_HARAKIRI_REQUEST,
  252. CHALET_DO_HARAKIRI_CONFIRMATION,
  253. CHALET_REBOOT_CPU_REQUEST,
  254. CHALET_REBOOT_CPU_RESPONSE,
  255. CHALET_GET_STORED_WIFI_SETTINGS_REQUEST,
  256. CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,
  257. CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,
  258. CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,
  259. CHALET_GET_FIRMWARE_VERSION_REQUEST,
  260. CHALET_GET_FIRMWARE_VERSION_RESPONSE,
  261. CHALET_CLEAR_COMMS_STATISTICS_REQUEST,
  262. CHALET_CLEAR_COMMS_STATISTICS_RESPONSE,
  263. CHALET_REGISTER_FRIENDLY_DEVICE_REQUEST,
  264. CHALET_REGISTER_FRIENDLY_DEVICE_RESPONSE,
  265. CHALET_FWD_DEVICE_MESSAGE_REQUEST,
  266. CHALET_FWD_DEVICE_MESSAGE_RESPONSE,
  267. MAX_CHALET_CMD
  268. };
  269. enum BOOTLOADER_CMDS
  270. {
  271. BOOTLOADER_ACK = 1,
  272. BOOTLOADER_HEARTBEAT_REQUEST,
  273. BOOTLOADER_HEARTBEAT_RESPONSE,
  274. BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST,
  275. BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESPONSE,
  276. BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE,
  277. BOOTLOADER_INIT_UPLOAD_REQUEST,
  278. BOOTLOADER_INIT_UPLOAD_RESPONSE,
  279. BOOTLOADER_GET_STATE_REQUEST,
  280. BOOTLOADER_GET_STATE_RESPONSE,
  281. BOOTLOADER_READY_FOR_DATA_RESPONSE,
  282. BOOTLOADER_SEND_DATA_CHUNK_REQUEST,
  283. BOOTLOADER_SEND_DATA_CHUNK_RESPONSE,
  284. BOOTLOADER_UPLOAD_FINISHED_REQUEST,
  285. BOOTLOADER_UPLOAD_FINISHED_RESPONSE,
  286. BOOTLOADER_EXECUTE_UPGRAGE_REQUEST,
  287. BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
  288. BOOTLOADER_ABORT_OPERATION_REQUEST,
  289. BOOTLOADER_ABORT_OPERATION_RESPONSE,
  290. BOOTLOADER_SEND_FLASH_DATA_REQUEST,
  291. BOOTLOADER_SEND_FLASH_DATA_RESPONSE,
  292. BOOTLOADER_SEND_FLASH_DATA_CHUNK,
  293. BOOTLOADER_SEND_FLASH_DATA_CHUNK_RESPONSE,
  294. BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_REQUEST,
  295. BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,
  296. BOOTLOADER_GET_STORED_FIRMWARE_INFO_REQUEST,
  297. BOOTLOADER_GET_STORED_FIRMWARE_INFO_RESPONSE,
  298. MAX_BOOTLOADER_CMD
  299. };
  300. #endif