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.
 
 
 
 

102 rivejä
2.3 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 BOOTLOADERINTERFACE_H
  12. #define BOOTLOADERINTERFACE_H
  13. //Protocol buffer specific definitions
  14. #include "ProtocolDefs.h"
  15. #define MASTER_ADDRESS 0x01
  16. #define MY_DEVICE_ADDRESS 0x01
  17. #define ADDRESS 0x01
  18. enum eProtocolUser
  19. {
  20. NETWORK_PROTOCOL_USER_LORA,
  21. NETWORK_PROTOCOL_USER_LTE
  22. };
  23. //State Machine states
  24. enum States
  25. {
  26. Initialization,
  27. RxHeader,
  28. RxAdd,
  29. RxID,
  30. RxMyID,
  31. RxMyAddress,
  32. RxFlags,
  33. RxCMD,
  34. RxSize1,
  35. RxSize2,
  36. RxSize3,
  37. RxSize4,
  38. RxData,
  39. RxCRC
  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,
  48. // ID_DEADBOLT
  49. //};
  50. //enum MESSAGE_IDS
  51. //{
  52. // TX_NETWORK_ACK = 1,
  53. // RX_GET_STATUS,
  54. // TX_DEADBOLT_STATUS,
  55. //
  56. // MAX_NETWORK_CMD
  57. //};
  58. //State machine states definition
  59. typedef struct stProtocolData
  60. {
  61. unsigned char mRxData[MAX_MESSAGE_SIZE+10];
  62. unsigned char mTxData[MAX_MESSAGE_SIZE+10];
  63. unsigned int DataSize;
  64. unsigned int DataCtr;
  65. unsigned int BufPtr;
  66. unsigned char RxPtr;
  67. unsigned char Command;
  68. unsigned char State;
  69. unsigned char CRC;
  70. unsigned char SenderID;
  71. unsigned char SenderAddress;
  72. unsigned char Flags;
  73. unsigned char IsUpdating;
  74. unsigned char *BmpDataPtr;
  75. }ProtocolData_t;
  76. void ProtocolInit(int User);
  77. void StateMachine(unsigned char STATE, ProtocolData_t *ProtocolData);
  78. void ProtocolAnalyzeNewData(unsigned char RxByte, int User);
  79. void ResetStateMachine(ProtocolData_t *ProtocolData);
  80. void ProtocolExecCmd(void);
  81. void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char Data);
  82. unsigned char* ProtocolGetFrame(unsigned char DestDevice,unsigned char DestAddress, unsigned char SenderDevice, unsigned char Cmd, unsigned char *Data,unsigned int Size,unsigned char Flags, int *FrameSize);
  83. unsigned char ProtocolCalcCrc(unsigned char* Buffer,unsigned char size);
  84. unsigned char ProtocolIsReceiving(void);
  85. unsigned char *ProtocolMsgDataPtr(ProtocolData_t *ProtocolData);
  86. #endif