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
- Committer:
- Diletant
- Date:
- 2016-02-17
- Revision:
- 64:8179dacbf32b
- Parent:
- 63:823c7f1ec6c3
- Child:
- 66:66124221f4b0
File content as of revision 64:8179dacbf32b:
#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;
/*
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  DELTA_PS        0xa0      //e. the code of the B_DeltaPS command //r. код команды B_DeltaPS
#define  DELTA_BINS      0xb0      //e. the code of the B_DeltaBINS command //r. код команды B_DeltaBINS
#define  DELTA_SF        0xb2      //e. the code of the B_DeltaSF command //r. код команды B_DeltaSF
#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(int8_t param);
#endif  /* __DEVICEPROTOCOL_H__ */
            
    