您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

123 行
3.2 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 BOOTLOADERPROTOCOL_H
  12. #define BOOTLOADERPROTOCOL_H
  13. //Protocol buffer specific definitions
  14. #define MAX_BOOTLOADER_PAYLOAD_SIZE 150
  15. #define BOOTLOADER_FRAME_HEADER 0xDEADBEEF
  16. #define BOOTLOADER_FRAME_HEADER_1 0xDE
  17. #define BOOTLOADER_FRAME_HEADER_2 0xAD
  18. #define BOOTLOADER_FRAME_HEADER_3 0xBE
  19. #define BOOTLOADER_FRAME_HEADER_4 0xEF
  20. #define PROTOCOL_INFO_DATA_SIZE 13 //Header + Cmd + Size + CRC = 13 bytes
  21. //State Machine states
  22. enum BLStates
  23. {
  24. BLInitialization,
  25. BLRxHeader1,
  26. BLRxHeader2,
  27. BLRxHeader3,
  28. BLRxHeader4,
  29. BLRxCmd,
  30. BLRxPayloadSize1,
  31. BLRxPayloadSize2,
  32. BLRxPayloadSize3,
  33. BLRxPayloadSize4,
  34. BLRxPayload,
  35. BLRxCRC1,
  36. BLRxCRC2,
  37. BLRxCRC3,
  38. BLRxCRC4
  39. };
  40. enum eBootloaderProtocolDataTransferError
  41. {
  42. BOOTLOADER_CHUNK_TRANSFER_SUCCESS = 1,
  43. BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND = 2,
  44. BOOTLOADER_CHUNK_TRANSFER_ERROR_FLASH_FAILURE = 3,
  45. BOOTLOADER_CHUNK_TRANSFER_ERROR_INVALID_CHUNK_INDEX = 4,
  46. BOOTLOADER_CHUNK_TRANSFER_ERROR_FLASH_ERROR = 5,
  47. BOOTLOADER_CHUNK_TRANSFER_MAX_ERROR
  48. };
  49. enum eBootloaderProtocolInitTransferError
  50. {
  51. BOOTLOADEDR_INIT_TRANSFER_ERROR = 0,
  52. BOOTLOADEDR_INIT_TRANSFER_OK = 1,
  53. BOOTLOADEDR_INIT_TRANSFER_ERROR_FLASH_NOT_ERASED,
  54. BOOTLOADEDR_INIT_TRANSFER_MAX_ERROR
  55. };
  56. enum eBootloaderUploadResult
  57. {
  58. BOOTLOADER_UPLOAD_FAILED_UNKNOWN_ERROR = 0,
  59. BOOTLOADER_UPLOAD_SUCCESS = 1,
  60. BOOTLOADER_UPLOAD_FAILED_FLASH_VERIFICATION_ERROR = 2,
  61. BOOTLOADER_UPLOAD_MAX_ERROR
  62. };
  63. enum eFlashCheckResult
  64. {
  65. FLASH_CHECK_FAILED = 0,
  66. FLASH_CHECK_SUCCESS = 1,
  67. FLASH_CHECK_MAX_RESULT
  68. };
  69. //enum DEVICES_IDS
  70. //{
  71. // ID_MASTER, //Master Controller
  72. // ID_CONSOLE, //LCD Console
  73. // ID_PC, //PC
  74. // ID_AV_MUX, //Audio Video Multiplexer
  75. // ID_IR_REMOTE,
  76. // ID_DEADBOLT
  77. //};
  78. //enum MESSAGE_IDS
  79. //{
  80. // TX_NETWORK_ACK = 1,
  81. // RX_GET_STATUS,
  82. // TX_DEADBOLT_STATUS,
  83. //
  84. // MAX_NETWORK_CMD
  85. //};
  86. //State machine states definition
  87. void BootloaderProtocolInit(void);
  88. void BootloaderProtocolStateMachine(unsigned char STATE);
  89. void BootloaderProtocolResetStateMachine(void);
  90. void BootloaderProtocolProtocolAnalyzeNewData(unsigned char *DataBuf, int size);
  91. void BootloaderProtocolSendFrame(unsigned char Cmd, int size);
  92. unsigned char *BootloaderProtocolGetDataBufferPtr();
  93. void BootloaderProtocolSendHeartbeat();
  94. void BootloaderProtocolSendACK(unsigned char Cmd);
  95. void BootloaderProtocolSendNACK(unsigned char Cmd);
  96. void BootloaderProtocolSendInitUploadResponse(char result);
  97. void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue);
  98. void BootloaderProtocolSendBootloaderState(char State);
  99. void BootloaderProtocolSendFirmwareUploadResult(char Result);
  100. void BootloaderProtocolSendFlashCheckResult(char Result);
  101. void BootloaderProtocolSendStoredFirmwareInfoResponse(unsigned char* FirmwareData, int size);
  102. #endif