Desktop Station gateway software for mbed
Dependents: DSGatewayMBED_Nucleo DSGatewayMBED_Nucleo_Step128
This library provides to control DCC and Marklin Motorola 2 locomtoives and turnouts via DCC/MM2 Shield. Please check our wiki site(http://desktopstation.net/wiki/).
DSGatewayMBED.h@0:96eb8cc345dc, 2015-01-17 (annotated)
- Committer:
- yaasan
- Date:
- Sat Jan 17 01:48:50 2015 +0000
- Revision:
- 0:96eb8cc345dc
- Child:
- 1:39249e22e9f5
New version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yaasan | 0:96eb8cc345dc | 1 | |
yaasan | 0:96eb8cc345dc | 2 | |
yaasan | 0:96eb8cc345dc | 3 | #ifndef DSGATEWAYLIB_H |
yaasan | 0:96eb8cc345dc | 4 | #define DSGATEWAYLIB_H |
yaasan | 0:96eb8cc345dc | 5 | |
yaasan | 0:96eb8cc345dc | 6 | #include "mbed.h" |
yaasan | 0:96eb8cc345dc | 7 | |
yaasan | 0:96eb8cc345dc | 8 | #define DSGATEWAY_VERSION 0x01 |
yaasan | 0:96eb8cc345dc | 9 | #define DEBUG false |
yaasan | 0:96eb8cc345dc | 10 | #define SIZE_PACKET 8 |
yaasan | 0:96eb8cc345dc | 11 | #define TIME_REPLY 200 |
yaasan | 0:96eb8cc345dc | 12 | #define SPI_SSPIN 10 |
yaasan | 0:96eb8cc345dc | 13 | |
yaasan | 0:96eb8cc345dc | 14 | #define ADDR_MM2 0x0000 // MM2 locomotive |
yaasan | 0:96eb8cc345dc | 15 | #define ADDR_SX1 0x0800 // Selectrix (old) locomotive |
yaasan | 0:96eb8cc345dc | 16 | #define ADDR_MFX 0x4000 // MFX locomotive |
yaasan | 0:96eb8cc345dc | 17 | #define ADDR_SX2 0x8000 // Selectrix (new) locomotive |
yaasan | 0:96eb8cc345dc | 18 | #define ADDR_DCC 0xC000 // DCC locomotive |
yaasan | 0:96eb8cc345dc | 19 | #define ADDR_ACC_SX1 0x2000 // Selectrix (old) magnetic accessory |
yaasan | 0:96eb8cc345dc | 20 | #define ADDR_ACC_MM2 0x2FFF // MM2 magnetic accessory |
yaasan | 0:96eb8cc345dc | 21 | #define ADDR_ACC_DCC 0x37FF // DCC magnetic accessory |
yaasan | 0:96eb8cc345dc | 22 | |
yaasan | 0:96eb8cc345dc | 23 | #define SPEEDSTEP_DCC28 0 |
yaasan | 0:96eb8cc345dc | 24 | #define SPEEDSTEP_DCC14 1 |
yaasan | 0:96eb8cc345dc | 25 | #define SPEEDSTEP_DCC127 2 |
yaasan | 0:96eb8cc345dc | 26 | #define SPEEDSTEP_MM14 0 |
yaasan | 0:96eb8cc345dc | 27 | #define SPEEDSTEP_MM28 1 |
yaasan | 0:96eb8cc345dc | 28 | |
yaasan | 0:96eb8cc345dc | 29 | #define CMD_PWR_OFF 0x00 |
yaasan | 0:96eb8cc345dc | 30 | #define CMD_PWR_ON 0xF0 |
yaasan | 0:96eb8cc345dc | 31 | |
yaasan | 0:96eb8cc345dc | 32 | #define CMD_WAIT 0xD0 |
yaasan | 0:96eb8cc345dc | 33 | #define CMD_OK 0x80 |
yaasan | 0:96eb8cc345dc | 34 | #define CMD_CRCERR 0x90 |
yaasan | 0:96eb8cc345dc | 35 | #define CMD_CMDERR 0xA0 |
yaasan | 0:96eb8cc345dc | 36 | #define CMD_UNKERR 0xC0 |
yaasan | 0:96eb8cc345dc | 37 | #define CMD_DCC_IDLE 0xC0 |
yaasan | 0:96eb8cc345dc | 38 | #define CMD_SPEED 0x10 |
yaasan | 0:96eb8cc345dc | 39 | #define CMD_ACCESSORY 0x20 |
yaasan | 0:96eb8cc345dc | 40 | #define CMD_FUNCTION 0x30 |
yaasan | 0:96eb8cc345dc | 41 | #define CMD_CVWRITE 0x40 |
yaasan | 0:96eb8cc345dc | 42 | #define CMD_DIRECTION 0x50 |
yaasan | 0:96eb8cc345dc | 43 | #define CMD_CVREAD 0x60 |
yaasan | 0:96eb8cc345dc | 44 | #define CMD_EXTENTION 0x70 |
yaasan | 0:96eb8cc345dc | 45 | |
yaasan | 0:96eb8cc345dc | 46 | |
yaasan | 0:96eb8cc345dc | 47 | /* 特殊・拡張機能用 */ |
yaasan | 0:96eb8cc345dc | 48 | #define EXCMD_NONE 0 |
yaasan | 0:96eb8cc345dc | 49 | |
yaasan | 0:96eb8cc345dc | 50 | // typedefs |
yaasan | 0:96eb8cc345dc | 51 | |
yaasan | 0:96eb8cc345dc | 52 | typedef unsigned char prog_uchar; |
yaasan | 0:96eb8cc345dc | 53 | typedef unsigned char prog_uint8_t; |
yaasan | 0:96eb8cc345dc | 54 | typedef unsigned int prog_uint16_t; |
yaasan | 0:96eb8cc345dc | 55 | typedef unsigned int prog_uint32_t; |
yaasan | 0:96eb8cc345dc | 56 | typedef unsigned char byte; |
yaasan | 0:96eb8cc345dc | 57 | typedef bool boolean; |
yaasan | 0:96eb8cc345dc | 58 | typedef unsigned char prog_uchar; |
yaasan | 0:96eb8cc345dc | 59 | typedef signed char prog_char; |
yaasan | 0:96eb8cc345dc | 60 | typedef signed long int word; |
yaasan | 0:96eb8cc345dc | 61 | |
yaasan | 0:96eb8cc345dc | 62 | byte lowByte(short int low); |
yaasan | 0:96eb8cc345dc | 63 | byte highByte(short int high); |
yaasan | 0:96eb8cc345dc | 64 | |
yaasan | 0:96eb8cc345dc | 65 | /* Defined functions */ |
yaasan | 0:96eb8cc345dc | 66 | class DSGatewayLib |
yaasan | 0:96eb8cc345dc | 67 | { |
yaasan | 0:96eb8cc345dc | 68 | private: |
yaasan | 0:96eb8cc345dc | 69 | void sendPacket(unsigned char *inPackets); |
yaasan | 0:96eb8cc345dc | 70 | bool sendMessage(unsigned char *inPackets); |
yaasan | 0:96eb8cc345dc | 71 | bool exchangeMessage(unsigned char *inPackets, word timeout); |
yaasan | 0:96eb8cc345dc | 72 | void clearMessage(unsigned char *inPackets); |
yaasan | 0:96eb8cc345dc | 73 | unsigned char generateCRC(unsigned char *inPackets, unsigned char inLen); |
yaasan | 0:96eb8cc345dc | 74 | byte convertAcc_MMDCC(word address, byte inSwitch); |
yaasan | 0:96eb8cc345dc | 75 | bool poweron; |
yaasan | 0:96eb8cc345dc | 76 | |
yaasan | 0:96eb8cc345dc | 77 | public: |
yaasan | 0:96eb8cc345dc | 78 | DSGatewayLib(); |
yaasan | 0:96eb8cc345dc | 79 | ~DSGatewayLib(); |
yaasan | 0:96eb8cc345dc | 80 | void begin(); |
yaasan | 0:96eb8cc345dc | 81 | |
yaasan | 0:96eb8cc345dc | 82 | bool IsPower(); |
yaasan | 0:96eb8cc345dc | 83 | |
yaasan | 0:96eb8cc345dc | 84 | bool SetPower(boolean power); |
yaasan | 0:96eb8cc345dc | 85 | bool SetPowerEx(boolean power); |
yaasan | 0:96eb8cc345dc | 86 | bool SetLocoSpeed(word address, int inSpeed); |
yaasan | 0:96eb8cc345dc | 87 | bool SetLocoSpeedEx(word address, int inSpeed, int inProtcol); |
yaasan | 0:96eb8cc345dc | 88 | bool SetLocoFunction(word address, unsigned char inFunction, unsigned char inPower); |
yaasan | 0:96eb8cc345dc | 89 | bool SetLocoDirection(word address, unsigned char inDirection); |
yaasan | 0:96eb8cc345dc | 90 | //boolean SetTurnout(word address, boolean straight); |
yaasan | 0:96eb8cc345dc | 91 | bool SetTurnout(word address, byte inSwitch); |
yaasan | 0:96eb8cc345dc | 92 | bool WriteConfig(word address, word number, byte value); |
yaasan | 0:96eb8cc345dc | 93 | bool ReadConfig(word address, word number, byte *value); |
yaasan | 0:96eb8cc345dc | 94 | word GetLocIDProtocol(byte address); |
yaasan | 0:96eb8cc345dc | 95 | |
yaasan | 0:96eb8cc345dc | 96 | }; |
yaasan | 0:96eb8cc345dc | 97 | |
yaasan | 0:96eb8cc345dc | 98 | #endif |