Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LG by
DeviceProtocol.h@59:daf3a8ed255e, 2016-02-14 (annotated)
- Committer:
- Diletant
- Date:
- Sun Feb 14 15:10:45 2016 +0000
- Revision:
- 59:daf3a8ed255e
- Parent:
- 54:d94145ba23f4
- Child:
- 60:98eb64c0fda3
Device protocol. Not final!!!
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Diletant | 54:d94145ba23f4 | 1 | #ifndef __DEVICEPROTOCOL_H__ |
| Diletant | 54:d94145ba23f4 | 2 | #define __DEVICEPROTOCOL_H__ |
| Diletant | 54:d94145ba23f4 | 3 | |
| Diletant | 54:d94145ba23f4 | 4 | #include "DeviceSettings.h" |
| Diletant | 54:d94145ba23f4 | 5 | #include "stdint.h" |
| Diletant | 54:d94145ba23f4 | 6 | |
| Diletant | 59:daf3a8ed255e | 7 | /*Move this to uart_m.h when protocol completed*/ |
| Diletant | 59:daf3a8ed255e | 8 | #define IOBufferSize 1024 |
| Diletant | 59:daf3a8ed255e | 9 | typedef struct _IOCyclicBuffer { |
| Diletant | 59:daf3a8ed255e | 10 | uint8_t buffer[IOBufferSize]; |
| Diletant | 59:daf3a8ed255e | 11 | int start; //first byte position |
| Diletant | 59:daf3a8ed255e | 12 | int end; //last byte position |
| Diletant | 59:daf3a8ed255e | 13 | } IOCyclicBuffer; |
| Diletant | 59:daf3a8ed255e | 14 | |
| Diletant | 59:daf3a8ed255e | 15 | /* |
| Diletant | 54:d94145ba23f4 | 16 | typedef struct { |
| Diletant | 54:d94145ba23f4 | 17 | uint8_t Offset; |
| Diletant | 54:d94145ba23f4 | 18 | uint8_t Mask; |
| Diletant | 54:d94145ba23f4 | 19 | uint8_t Value; |
| Diletant | 54:d94145ba23f4 | 20 | } DeviceMessageCheckPoint; |
| Diletant | 54:d94145ba23f4 | 21 | |
| Diletant | 54:d94145ba23f4 | 22 | typedef enum{ |
| Diletant | 54:d94145ba23f4 | 23 | DMID_DeviceMode |
| Diletant | 54:d94145ba23f4 | 24 | } DeviceMessageID; |
| Diletant | 54:d94145ba23f4 | 25 | |
| Diletant | 54:d94145ba23f4 | 26 | typedef struct { |
| Diletant | 54:d94145ba23f4 | 27 | DeviceMessageID ID; |
| Diletant | 54:d94145ba23f4 | 28 | uint8_t Size; |
| Diletant | 54:d94145ba23f4 | 29 | uint8_t CheckPointCount; |
| Diletant | 54:d94145ba23f4 | 30 | DeviceMessageCheckPoint *CheckPointList; |
| Diletant | 54:d94145ba23f4 | 31 | } DeviceMessageCheck; |
| Diletant | 59:daf3a8ed255e | 32 | */ |
| Diletant | 54:d94145ba23f4 | 33 | |
| Diletant | 54:d94145ba23f4 | 34 | //Command: DeviceMode |
| Diletant | 59:daf3a8ed255e | 35 | //DeviceMessageCheckPoint DeviceModeRequestCheck[] = {{0x00,0xff,0xcc},{0x02,0xff,0xcc},{0x03,0xf0,0x00}}; |
| Diletant | 59:daf3a8ed255e | 36 | //DeviceMessageCheckPoint DeviceModeResponseCheck[] = {{0x00,0xff,0xcc},{0x02,0xff,0x00}}; |
| Diletant | 54:d94145ba23f4 | 37 | typedef enum |
| Diletant | 54:d94145ba23f4 | 38 | { |
| Diletant | 54:d94145ba23f4 | 39 | Reserved, |
| Diletant | 54:d94145ba23f4 | 40 | DevModeLatch10kHz, //internal latch with frequency 10 kHz (power on default mode) |
| Diletant | 54:d94145ba23f4 | 41 | DevModeLatchMeander, //internal latch by signed meander pulses |
| Diletant | 54:d94145ba23f4 | 42 | DevModeLatchRS422PS, //external latch by RS422 B_Delta_PS request with B_Delta_PS format response |
| Diletant | 54:d94145ba23f4 | 43 | DevModeLatchRequestPS, //external latch by pulse request with B_Delta_PS format response |
| Diletant | 54:d94145ba23f4 | 44 | DevModeLatchRS422BINS, //external latch by RS422 B_Delta_BINS request with B_Delta_BINS format response |
| Diletant | 54:d94145ba23f4 | 45 | DevModeLatchRequestBINS //external latch mode with B_Delta_BINS format data and latch pulse request |
| Diletant | 54:d94145ba23f4 | 46 | } DeviceModes; |
| Diletant | 54:d94145ba23f4 | 47 | typedef __packed struct { |
| Diletant | 54:d94145ba23f4 | 48 | uint8_t SOC; //Start Of Command: 0xCC |
| Diletant | 54:d94145ba23f4 | 49 | uint8_t Address; //Device address: 0x00, 0x01, 0x02, 0x1f |
| Diletant | 54:d94145ba23f4 | 50 | uint8_t Cmd; //Command code: 0xA5 |
| Diletant | 54:d94145ba23f4 | 51 | uint8_t Reserved : 4; //Reserved |
| Diletant | 54:d94145ba23f4 | 52 | DeviceModes Mode : 4; //Device mode |
| Diletant | 54:d94145ba23f4 | 53 | uint8_t ChecksumHi; //Checksum Hi byte |
| Diletant | 54:d94145ba23f4 | 54 | uint8_t ChecksumLo; //Checksum Lo byte |
| Diletant | 54:d94145ba23f4 | 55 | } DeviceModeRequest; |
| Diletant | 54:d94145ba23f4 | 56 | typedef __packed struct { |
| Diletant | 54:d94145ba23f4 | 57 | uint8_t SOC; //Start Of Command: 0xCC |
| Diletant | 54:d94145ba23f4 | 58 | uint8_t Address; //Device address: 0x00, 0x01, 0x02, 0x1f |
| Diletant | 54:d94145ba23f4 | 59 | uint8_t Zero; //Reserved: 0x00 |
| Diletant | 54:d94145ba23f4 | 60 | uint8_t Mode; //Device mode |
| Diletant | 54:d94145ba23f4 | 61 | uint8_t RgRHi; //Register RgR Hi byte |
| Diletant | 54:d94145ba23f4 | 62 | uint8_t RgRLo; //Register RgR Lo byte |
| Diletant | 54:d94145ba23f4 | 63 | uint8_t ChecksumHi; //Checksum Hi byte |
| Diletant | 54:d94145ba23f4 | 64 | uint8_t ChecksumLo; //Checksum Lo byte |
| Diletant | 54:d94145ba23f4 | 65 | } DeviceModeResponse; |
| Diletant | 59:daf3a8ed255e | 66 | /* |
| Diletant | 54:d94145ba23f4 | 67 | DeviceMessageCheck DeviceRequestChecks[] = { |
| Diletant | 54:d94145ba23f4 | 68 | {DMID_DeviceMode, 6, 3, DeviceModeRequestCheck} |
| Diletant | 54:d94145ba23f4 | 69 | }; |
| Diletant | 54:d94145ba23f4 | 70 | |
| Diletant | 54:d94145ba23f4 | 71 | DeviceMessageCheck DeviceResponseChecks[] = { |
| Diletant | 54:d94145ba23f4 | 72 | {DMID_DeviceMode, 8, 2, DeviceModeResponseCheck} |
| Diletant | 54:d94145ba23f4 | 73 | }; |
| Diletant | 59:daf3a8ed255e | 74 | */ |
| Diletant | 54:d94145ba23f4 | 75 | |
| Diletant | 59:daf3a8ed255e | 76 | int PullRequest(IOCyclicBuffer *b); |
| Diletant | 54:d94145ba23f4 | 77 | |
| Diletant | 54:d94145ba23f4 | 78 | #endif /* __DEVICEPROTOCOL_H__ */ |
