Dmitry Kovalev / Mbed 2 deprecated LG2

Dependencies:   mbed

Fork of LG by igor Apu

DeviceProtocol.h

Committer:
Diletant
Date:
2016-02-20
Revision:
68:46937d192c39
Parent:
67:84fee3a2bc0c
Child:
69:70849751d98e

File content as of revision 68:46937d192c39:

#ifndef __DEVICEPROTOCOL_H__
#define __DEVICEPROTOCOL_H__

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

/*Move this to uart_m.h when protocol completed*/
#define IOBufferSize        1024
typedef struct _IOCyclicBuffer {
    uint8_t buffer[IOBufferSize];
    int start; //first byte position
    int end;   //last byte position
} IOCyclicBuffer;
/*Move this to uart_m.h when protocol completed*/
IOCyclicBuffer ReadBuffer1;
/*Move this to uart_m.h when protocol completed*/
IOCyclicBuffer WriteBuffer1;

/*
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;
*/

#define  BROADCAST_FRAME 100       //100 mks

#define  DELTA_PS        0xa0      //B_DeltaPS command code: output of accumulated pulses and ACS parameters as 22 indexed packets sequence
#define  DELTA_BINS      0xb0      //B_DeltaBINS command code: output of accumulated pulses and data validity attribute in one packet
#define  DELTA_SF        0xb2      //B_DeltaSF command code: scale factor measurement data output in one packet
#define  DEV_MODE        0xa5      //e. the code of the Device_Mode command //r. код команды Device_Mode
#define  BIT_MODE        0xa7      //e. the code of the B.I.T. command //r. код команды B.I.T.(встороенного тестирования)
#define  RATE            0x00      //e. the code of the Rate command //r. код команды Rate  
#define  DELTA           0x0f      //e. the code of the Delta command //r. код команды Delta
#define  D_PERIOD_W      0xf0      //e. the code of the D_Period_W command //r. код команды D_Period_W

#define  MAINTENANCE     0x99      //e. the code of the Maintenance mode command //r. код команды Maintenance mode
//Maintenance command set versions
#define    M0_MAINTENANCE  0x99    //: initial version 
//Maintenance basic commands group
#define    M0_BASIC        0xda    //Basic maintenance commands group code
#define      M0_CLEAR        0x00      //group command select: e. reset of the register of errors of line 485 //r. очистка регистра ошибок линии 485
#define      M0_MIRROR       0x01      //group command select: e. return previous contents of the receiver buffer //r. возврат предыдущего содержимого буфера приемника  
#define      M0_LDPAR_F      0x02      //group command select: e. load GLD parameters from Flash-memory //r. загрузить параметры ГЛД из флэш-памяти
#define      M0_LDPAR_D      0x03      //group command select: e. set GLD parameters by procedure of initialization //r. установить параметры ГЛД процедурой инициализации 
#define      M0_START        0x04      //group command select: e. switch on the GLD //r. включить ГЛД          
#define      M0_STOP         0x40      //group command select: e. switch off the GLD //r. выключить ГЛД
#define      M0_PULSE        0x0a      //group command select: e. generation of the light-up pulse //r. генерация импульса поджига
//Maintenance rate commands group
#define    M0_RATE         0xdd    //e. delivery of a stack of parameters M_Rate (Rate2, Rate3) //r. выдача набора параметров M_Rate  (Rate2, Rate3)
#define      M0_RATE_0       0x00      //group command select: output parameters set 0?
#define      M0_RATE_1       0x01      //group command select: output parameters set 1?
#define      M0_RATE_2       0x02      //group command select: output parameters set 2
#define      M0_RATE_3       0x03      //group command select: output parameters set 3
#define      M0_RATE_4       0x04      //group command select: output parameters set 4
#define      M0_RATE_7       0x07      //group command select: output parameters set 7

//Other maintenance commands
#define    M0_STIMUL       0x0a    //e. the code of the Stimul command //r. код команды Stimul    
#define    M0_RESET        0x80    //e. software device reset(restart) //r. программный сброс (рестарт) прибора

#define    M0_CTL_R        0xd9    //e. reading the control register of the device //r. чтение регистра управления устройства  
#define    M0_CTL_M        0xd8    //e. modification of bit of the control register //r. модификация бита регистра управления 

#define    M0_TMP_W        0xe0    //e. writing to the AD7714 circuit (temperature sensors) //r. запись в схемы AD7714 (измерители температуры) 
#define    M0_TMP_R        0xe1    //e. reading from the AD7714 circuit (temperature sensors) //r. чтение из схем AD7714 (измерители температуры) 
#define    M0_E5R_W        0xe2    //e. writing to the register of a mode of the Elio5 card //r. запись в регистр режима платы Elio5  
#define    M0_ADC_R        0xe3    //e. reading data from the ADC of the Elio5 card //r. чтение данных из АЦП платы Elio5
#define    M0_VIB_W        0xe4    //e. loading of the oscillation period of the dither drive //r. загрузка периода колебаний вибропривода  
#define    M0_CNT_R        0xe5    //e. reading data from the counters of the Elio5 card //r. чтение данных из счетчиков платы Elio5
#define    M0_GPH_W        0xe6    //e. loading gain factors of photodetector channels //r. загрузка коэффициентов усиления каналов фотоприемника  
#define    M0_FLG_R        0xe7    //e. reading data from the register of input flags  //r. чтение данных из регистра входных флагов
#define    M0_PARAM_W      0xe8    //e. writing working parameter to the data memory //r. запись рабочего параметра в память данных          
#define    M0_PARAM_R      0xe9    //e. reading working parameter of the GLD from the data memory //r. чтение рабочего параметра GLD из памяти данных 
#define    M0_E5RA_W       0xea    //e. writing in 1st additional (A) register of a mode of the Elio5 card //r. запись в 1-ый дополнительный (А) регистр режима платы Elio5

//Command: DeviceMode
//DeviceMessageCheckPoint DeviceModeRequestCheck[] = {{0x00,0xff,0xcc},{0x02,0xff,0xcc},{0x03,0xf0,0x00}};
//DeviceMessageCheckPoint DeviceModeResponseCheck[] = {{0x00,0xff,0xcc},{0x02,0xff,0x00}};
typedef enum
{
  RESPONSE_IMMEDIATE,     //external latch by RS422 B_Delta_BINS request with B_Delta_BINS format response
  RESPONSE_BROADCAST    //external latch mode with B_Delta_BINS format data and latch pulse request
} ResponseModes;
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 PullRequest(IOCyclicBuffer *b);

void SetDeviceMode(uint8_t param);
void InitDeltaBINS(uint8_t param);

#endif  /* __DEVICEPROTOCOL_H__ */