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
- Committer:
- yaasan
- Date:
- 2015-01-17
- Revision:
- 0:96eb8cc345dc
- Child:
- 1:39249e22e9f5
File content as of revision 0:96eb8cc345dc:
#ifndef DSGATEWAYLIB_H #define DSGATEWAYLIB_H #include "mbed.h" #define DSGATEWAY_VERSION 0x01 #define DEBUG false #define SIZE_PACKET 8 #define TIME_REPLY 200 #define SPI_SSPIN 10 #define ADDR_MM2 0x0000 // MM2 locomotive #define ADDR_SX1 0x0800 // Selectrix (old) locomotive #define ADDR_MFX 0x4000 // MFX locomotive #define ADDR_SX2 0x8000 // Selectrix (new) locomotive #define ADDR_DCC 0xC000 // DCC locomotive #define ADDR_ACC_SX1 0x2000 // Selectrix (old) magnetic accessory #define ADDR_ACC_MM2 0x2FFF // MM2 magnetic accessory #define ADDR_ACC_DCC 0x37FF // DCC magnetic accessory #define SPEEDSTEP_DCC28 0 #define SPEEDSTEP_DCC14 1 #define SPEEDSTEP_DCC127 2 #define SPEEDSTEP_MM14 0 #define SPEEDSTEP_MM28 1 #define CMD_PWR_OFF 0x00 #define CMD_PWR_ON 0xF0 #define CMD_WAIT 0xD0 #define CMD_OK 0x80 #define CMD_CRCERR 0x90 #define CMD_CMDERR 0xA0 #define CMD_UNKERR 0xC0 #define CMD_DCC_IDLE 0xC0 #define CMD_SPEED 0x10 #define CMD_ACCESSORY 0x20 #define CMD_FUNCTION 0x30 #define CMD_CVWRITE 0x40 #define CMD_DIRECTION 0x50 #define CMD_CVREAD 0x60 #define CMD_EXTENTION 0x70 /* 特殊・拡張機能用 */ #define EXCMD_NONE 0 // typedefs typedef unsigned char prog_uchar; typedef unsigned char prog_uint8_t; typedef unsigned int prog_uint16_t; typedef unsigned int prog_uint32_t; typedef unsigned char byte; typedef bool boolean; typedef unsigned char prog_uchar; typedef signed char prog_char; typedef signed long int word; byte lowByte(short int low); byte highByte(short int high); /* Defined functions */ class DSGatewayLib { private: void sendPacket(unsigned char *inPackets); bool sendMessage(unsigned char *inPackets); bool exchangeMessage(unsigned char *inPackets, word timeout); void clearMessage(unsigned char *inPackets); unsigned char generateCRC(unsigned char *inPackets, unsigned char inLen); byte convertAcc_MMDCC(word address, byte inSwitch); bool poweron; public: DSGatewayLib(); ~DSGatewayLib(); void begin(); bool IsPower(); bool SetPower(boolean power); bool SetPowerEx(boolean power); bool SetLocoSpeed(word address, int inSpeed); bool SetLocoSpeedEx(word address, int inSpeed, int inProtcol); bool SetLocoFunction(word address, unsigned char inFunction, unsigned char inPower); bool SetLocoDirection(word address, unsigned char inDirection); //boolean SetTurnout(word address, boolean straight); bool SetTurnout(word address, byte inSwitch); bool WriteConfig(word address, word number, byte value); bool ReadConfig(word address, word number, byte *value); word GetLocIDProtocol(byte address); }; #endif