Dmitry Kovalev / Mbed 2 deprecated LG2

Dependencies:   mbed

Fork of LG by igor Apu

DeviceProtocol.h

Committer:
Diletant
Date:
2016-02-14
Revision:
54:d94145ba23f4
Child:
58:26cb8f5f9504
Child:
59:daf3a8ed255e

File content as of revision 54:d94145ba23f4:

#ifndef __DEVICEPROTOCOL_H__
#define __DEVICEPROTOCOL_H__

#include "DeviceSettings.h"
#include "stdint.h"

typedef struct {
    uint8_t Offset;
    uint8_t Mask;
    uint8_t Value;
} DeviceMessageCheckPoint;

typedef enum{
  DMID_DeviceMode
} DeviceMessageID;

typedef struct {
    DeviceMessageID ID;
    uint8_t Size;
    uint8_t CheckPointCount;
    DeviceMessageCheckPoint *CheckPointList;
} DeviceMessageCheck;



typedef enum {
  CMD_B_DELTA_PS   = 0xa000, //e. the code of the B_DeltaPS command //r. код команды B_DeltaPS
  CMD_B_DELTA_BINS = 0xb000, //e. the code of the B_DeltaBINS command //r. код команды B_DeltaBINS
  CMD_B_DELTA_SF   = 0xb200, //e. the code of the B_DeltaSF command //r. код команды B_DeltaSF
  CMD_DEV_MODE     = 0xA500, //e. the code of the Device_Mode command //r. код команды Device_Mode
  CMD_BIT_MODE     = 0xA700, //e. the code of the B.I.T. command //r. код команды B.I.T.(встроенного тестирования)
  CMD_RATE         = 0x0000, //e. the code of the Rate command //r. код команды Rate  
  CMD_DELTA        = 0x0f00, //e. the code of the Delta command //r. код команды Delta
  CMD_D_PERIOD_W   = 0xf000, //e. the code of the D_Period_W command //r. код команды D_Period_W
  CMD_MAINT        = 0x9999, //e. the code of the Maintenance mode command //r. код команды Maintenance mode
} DeviceCommands;
typedef enum {
  SUBCMD_M_STIMUL  = 0x0a00, //e. the code of the Stimul command //r. код команды Stimul    
  SUBCMD_M_RESET   = 0x8000, //e. software device reset(restart) //r. программный сброс (рестарт) прибора
  SUBCMD_M_CLEAR   = 0xda00, //e. reset of the register of errors of line 485 //r. очистка регистра ошибок линии 485  
  SUBCMD_M_MIRR    = 0xda01, //e. return previous contents of the receiver buffer //r. возврат предыдущего содержимого буфера приемника  
  SUBCMD_M_LDPAR_F = 0xda02, //e. load GLD parameters from Flash-memory //r. загрузить параметры ГЛД из флэш-памяти
  SUBCMD_M_LDPAR_D = 0xda03, //e. set GLD parameters by procedure of initialization //r. установить параметры ГЛД процедурой инициализации 
  SUBCMD_M_START   = 0xda04, //e. switch on the GLD //r. включить ГЛД          
  SUBCMD_M_STOP    = 0xda40, //e. switch off the GLD //r. выключить ГЛД
  SUBCMD_M_PULSE   = 0xda0a, //e. generation of the light-up pulse //r. генерация импульса поджига
    
  SUBCMD_M_CTL_R   = 0xd900, //e. reading the control register of the device //r. чтение регистра управления устройства  
  SUBCMD_M_CTL_M   = 0xd800, //e. modification of bit of the control register //r. модификация бита регистра управления 
  SUBCMD_M_RATE    = 0xdd00, //e. delivery of a stack of parameters M_Rate (Rate2, Rate3) //r. выдача набора параметров M_Rate  (Rate2, Rate3)

  SUBCMD_M_TMP_W   = 0xe000, //e. writing to the AD7714 circuit (temperature sensors) //r. запись в схемы AD7714 (измерители температуры) 
  SUBCMD_M_TMP_R   = 0xe100, //e. reading from the AD7714 circuit (temperature sensors) //r. чтение из схем AD7714 (измерители температуры) 
  SUBCMD_M_E5R_W   = 0xe200, //e. writing to the register of a mode of the Elio5 card //r. запись в регистр режима платы Elio5  
  SUBCMD_M_ADC_R   = 0xe300, //e. reading data from the ADC of the Elio5 card //r. чтение данных из АЦП платы Elio5
  SUBCMD_M_VIB_W   = 0xe400, //e. loading of the oscillation period of the dither drive //r. загрузка периода колебаний вибропривода  
  SUBCMD_M_CNT_R   = 0xe500, //e. reading data from the counters of the Elio5 card //r. чтение данных из счетчиков платы Elio5
  SUBCMD_M_GPH_W   = 0xe600, //e. loading gain factors of photodetector channels //r. загрузка коэффициентов усиления каналов фотоприемника  
  SUBCMD_M_FLG_R   = 0xe700, //e. reading data from the register of input flags  //r. чтение данных из регистра входных флагов
  SUBCMD_M_PARAM_W = 0xe800, //e. writing working parameter to the data memory //r. запись рабочего параметра в память данных          
  SUBCMD_M_PARAM_R = 0xe900, //e. reading working parameter of the GLD from the data memory //r. чтение рабочего параметра GLD из памяти данных 
  SUBCMD_M_E5RA_W  = 0xea00, //e. writing in 1st additional (A) register of a mode of the Elio5 card //r. запись в 1-ый дополнительный (А) регистр режима платы Elio5
} DeviceSubCommands;

//Command: DeviceMode
DeviceMessageCheckPoint DeviceModeRequestCheck[] = {{0x00,0xff,0xcc},{0x02,0xff,0xcc},{0x03,0xf0,0x00}};
DeviceMessageCheckPoint DeviceModeResponseCheck[] = {{0x00,0xff,0xcc},{0x02,0xff,0x00}};
typedef enum
{
  Reserved,
  DevModeLatch10kHz,         //internal latch with frequency 10 kHz (power on default mode)
  DevModeLatchMeander,       //internal latch by signed meander pulses
  DevModeLatchRS422PS,       //external latch by RS422 B_Delta_PS request with B_Delta_PS format response
  DevModeLatchRequestPS,     //external latch by pulse request with B_Delta_PS format response
  DevModeLatchRS422BINS,     //external latch by RS422 B_Delta_BINS request with B_Delta_BINS format response
  DevModeLatchRequestBINS    //external latch mode with B_Delta_BINS format data and latch pulse request
} DeviceModes;
typedef __packed struct {
    uint8_t SOC;          //Start Of Command: 0xCC
    uint8_t Address;      //Device address: 0x00, 0x01, 0x02, 0x1f
    uint8_t Cmd;          //Command code: 0xA5
    uint8_t Reserved : 4; //Reserved
    DeviceModes Mode : 4; //Device mode
    uint8_t ChecksumHi;   //Checksum Hi byte
    uint8_t ChecksumLo;   //Checksum Lo byte
} DeviceModeRequest;
typedef __packed struct {
    uint8_t SOC;          //Start Of Command: 0xCC
    uint8_t Address;      //Device address: 0x00, 0x01, 0x02, 0x1f
    uint8_t Zero;         //Reserved: 0x00
    uint8_t Mode;         //Device mode
    uint8_t RgRHi;        //Register RgR Hi byte
    uint8_t RgRLo;        //Register RgR Lo byte
    uint8_t ChecksumHi;   //Checksum Hi byte
    uint8_t ChecksumLo;   //Checksum Lo byte
} DeviceModeResponse;

DeviceMessageCheck DeviceRequestChecks[] = {
   {DMID_DeviceMode, 6, 3, DeviceModeRequestCheck}
};

DeviceMessageCheck DeviceResponseChecks[] = {
   {DMID_DeviceMode, 8, 2, DeviceModeResponseCheck}
};

int CheckRequest(char *s, int start, int end);

#endif  /* __DEVICEPROTOCOL_H__ */