123
Fork of LG by
DeviceUser.h
- Committer:
- Kovalev_D
- Date:
- 2016-10-19
- Revision:
- 197:7a05523bf588
- Parent:
- 182:2bd8ec44998f
File content as of revision 197:7a05523bf588:
#ifndef __DEVICE_USER_H__ #define __DEVICE_USER_H__ #include "stdint.h" #include "DeviceUserRequest.h" #include "DeviceUserResponse.h" #include "DeviceUserDecoder.h" #include "DeviceUserEncoder.h" #define BROADCAST_ADDRESS 0x1f #define BROADCAST_FRAME 100 //100 mks //All commands #define DELTA_PS 0xa000 //B_DeltaPS command code: output of accumulated pulses and ACS parameters as 22 indexed packets sequence #define DELTA_BINS 0xb000 //B_DeltaBINS command code: output of accumulated pulses and data validity attribute in one packet #define DELTA_SF 0xb200 //B_DeltaSF command code: scale factor measurement data output in one packet #define DEV_MODE 0xa500 //Device_Mode command code #define BIT_MODE 0xa700 //B.I.T. (built-in test) command code #define MAINTENANCE 0x9900 //Maintenance mode command code //Maintenance command set versions #define M0_MAINTENANCE 0x99 //: initial version //Maintenance basic commands group #define M0_BASIC 0xda00 //Basic maintenance commands group code #define M0_CLEAR 0xda00 //group command select: reset line 485 error register #define M0_MIRROR 0xda01 //group command select: return previous contents of the receiver buffer #define M0_LDPAR_F 0xda02 //group command select: load device parameters from Flash-memory #define M0_LDPAR_D 0xda03 //group command select: set device parameters by procedure of initialization #define M0_START 0xda04 //group command select: switch on the device #define M0_STOP 0xda40 //group command select: switch off the device #define M0_PULSE 0xda0a //group command select: generation of the light-up pulse //Maintenance rate commands group #define M0_RATE 0xdd00 //M_Rate commands group code #define M0_RATE_1 0xdd01 //group command select: output parameters set 1 (MRate) #define M0_RATE_2 0xdd02 //group command select: output parameters set 2 (MRate2) #define M0_RATE_3 0xdd03 //group command select: output parameters set 3 (MRate3) #define M0_RATE_4 0xdd04 //group command select: output parameters set 4 (MRate4) #define M0_RATE_7 0xdd07 //group command select: output parameters set 7 (MRate7) //Other maintenance commands #define M0_STIMUL 0x0a00 //MStimul command code #define M0_RESET 0x8000 //software device reset(restart) #define M0_CTL_R 0xd900 //reading the control register RgConA/B of the device #define M0_CTL_A_R 0xd900 //MCtlR command code mask: reading the control register RgConA of the device #define M0_CTL_B_R 0xd910 //MCtlR command code mask: reading the control register RgConB of the device #define M0_CTL_M 0xd800 //modification of bit of the control register #define M0_CTL_A_M 0xd800 //MCtlM command code mask: modification control register RgConA of the device #define M0_CTL_B_M 0xd810 //MCtlM command code mask: modification the control register RgConB of the device #define M0_TMP_W 0xe000 //writing to the AD7714 circuit (temperature sensors) #define M0_TMP_R 0xe100 //reading from the AD7714 circuit (temperature sensors) #define M0_E5R_W 0xe200 //writing to the register of a mode of the Elio5 card #define M0_ADC_R 0xe300 //reading data from the ADC of the Elio5 card #define M0_VIB_W 0xe400 //loading of the oscillation period of the dither drive #define M0_CNT_R 0xe500 //reading data from the counters of the Elio5 card #define M0_GPH_W 0xe600 //loading gain factors of photodetector channels #define M0_FLG_R 0xe700 //reading data from the register of input flags #define M0_PARAM_W 0xe800 //writing working parameter to the data memory #define M0_PARAM_R 0xe900 //reading working parameter of the GLD from the data memory #define M0_E5RA_W 0xea00 //writing in 1st additional (A) register of a mode of the Elio5 card //Factory maintenance commands #define FACTORY_ACCESS 0xff00 //Factory access: command mask #define H_PARAM8_R 0xff00 //Hash access: 0000b read 1-byte param #define H_PARAM16_R 0xff01 //Hash access: 0001b read 2-byte param #define H_PARAM32_R 0xff03 //Hash access: 0010b read 4-byte param #define H_BYTES_R 0xff0f //Hash access: 1111b read bytes param #define H_PARAM8_W 0xff10 //Hash access: 0000b write 1-byte param #define H_PARAM16_W 0xff11 //Hash access: 0001b write 2-byte param #define H_PARAM32_W 0xff13 //Hash access: 0010b write 4-byte param #define H_BYTES_W 0xff1f //Hash access: 1111b write bytes param #define H_FUNC_PARAM0_BY_IMM8 0xff20 //Hash access: 0000b set function parameter 0 by 8 bit immediate value #define H_FUNC_PARAM1_BY_IMM8 0xff24 //Hash access: 0100b set function parameter 1 by 8 bit immediate value #define H_FUNC_PARAM2_BY_IMM8 0xff28 //Hash access: 1000b set function parameter 2 by 8 bit immediate value #define H_FUNC_PARAM3_BY_IMM8 0xff2c //Hash access: 1100b set function parameter 3 by 8 bit immediate value #define H_FUNC_PARAM0_BY_IMM16 0xff21 //Hash access: 0001b set function parameter 0 by 16 bit immediate value #define H_FUNC_PARAM1_BY_IMM16 0xff25 //Hash access: 0101b set function parameter 1 by 16 bit immediate value #define H_FUNC_PARAM2_BY_IMM16 0xff29 //Hash access: 1001b set function parameter 2 by 16 bit immediate value #define H_FUNC_PARAM3_BY_IMM16 0xff2d //Hash access: 1101b set function parameter 3 by 16 bit immediate value #define H_FUNC_PARAM0_BY_IMM32 0xff23 //Hash access: 0011b set function parameter 0 by 32 bit immediate value #define H_FUNC_PARAM1_BY_IMM32 0xff27 //Hash access: 0111b set function parameter 1 by 32 bit immediate value #define H_FUNC_PARAM2_BY_IMM32 0xff2b //Hash access: 1011b set function parameter 2 by 32 bit immediate value #define H_FUNC_PARAM3_BY_IMM32 0xff2f //Hash access: 1111b set function parameter 3 by 32 bit immediate value #define H_FUNC_PARAM0_BY_VAL8 0xff30 //Hash access: 0000b set function parameter 0 by 8 bit variable value #define H_FUNC_PARAM1_BY_VAL8 0xff34 //Hash access: 0100b set function parameter 1 by 8 bit variable value #define H_FUNC_PARAM2_BY_VAL8 0xff38 //Hash access: 1000b set function parameter 2 by 8 bit variable value #define H_FUNC_PARAM3_BY_VAL8 0xff3c //Hash access: 1100b set function parameter 3 by 8 bit variable value #define H_FUNC_PARAM0_BY_VAL16 0xff31 //Hash access: 0001b set function parameter 0 by 16 bit variable value #define H_FUNC_PARAM1_BY_VAL16 0xff35 //Hash access: 0101b set function parameter 1 by 16 bit variable value #define H_FUNC_PARAM2_BY_VAL16 0xff39 //Hash access: 1001b set function parameter 2 by 16 bit variable value #define H_FUNC_PARAM3_BY_VAL16 0xff3d //Hash access: 1101b set function parameter 3 by 16 bit variable value #define H_FUNC_PARAM0_BY_VAL32 0xff33 //Hash access: 0011b set function parameter 0 by 32 bit variable value #define H_FUNC_PARAM1_BY_VAL32 0xff37 //Hash access: 0111b set function parameter 1 by 32 bit variable value #define H_FUNC_PARAM2_BY_VAL32 0xff3b //Hash access: 1011b set function parameter 2 by 32 bit variable value #define H_FUNC_PARAM3_BY_VAL32 0xff3f //Hash access: 1111b set function parameter 3 by 32 bit variable value #define H_FUNC_PARAM0_BY_REF8 0xff40 //Hash access: 0000b set function parameter 0 by 8 bit variable reference #define H_FUNC_PARAM1_BY_REF8 0xff44 //Hash access: 0100b set function parameter 1 by 8 bit variable reference #define H_FUNC_PARAM2_BY_REF8 0xff48 //Hash access: 1000b set function parameter 2 by 8 bit variable reference #define H_FUNC_PARAM3_BY_REF8 0xff4c //Hash access: 1100b set function parameter 3 by 8 bit variable reference #define H_FUNC_PARAM0_BY_REF16 0xff41 //Hash access: 0001b set function parameter 0 by 16 bit variable reference #define H_FUNC_PARAM1_BY_REF16 0xff45 //Hash access: 0101b set function parameter 1 by 16 bit variable reference #define H_FUNC_PARAM2_BY_REF16 0xff49 //Hash access: 1001b set function parameter 2 by 16 bit variable reference #define H_FUNC_PARAM3_BY_REF16 0xff4d //Hash access: 1101b set function parameter 3 by 16 bit variable reference #define H_FUNC_PARAM0_BY_REF32 0xff43 //Hash access: 0011b set function parameter 0 by 32 bit variable reference #define H_FUNC_PARAM1_BY_REF32 0xff47 //Hash access: 0111b set function parameter 1 by 32 bit variable reference #define H_FUNC_PARAM2_BY_REF32 0xff4b //Hash access: 1011b set function parameter 2 by 32 bit variable reference #define H_FUNC_PARAM3_BY_REF32 0xff4f //Hash access: 1111b set function parameter 3 by 32 bit variable reference #define FUNCTION_CALL 0xff50 //Hash access: function call - no parameters #define FUNCTION_CALL_1 0xff51 //Hash access: function call - 1 parameter #define FUNCTION_CALL_2 0xff52 //Hash access: function call - 2 parameters #define FUNCTION_CALL_3 0xff53 //Hash access: function call - 3 parameters #define FUNCTION_CALL_4 0xff54 //Hash access: function call - 4 parameters #define FLASH_READ_ALL 0xff60 //Flash access: read all from flash #define FLASH_WRITE_ALL 0xff70 //Flash access: write all to flash //Common response messages #define MESSAGE_OK 0x0000 #define MESSAGE_UNKNOWN_REQUEST_CODE 0x8000 #define MESSAGE_UNKNOWN_REQUEST_PARAMETER 0x8001 #define MESSAGE_UNKNOWN_REQUEST_HASH 0x8002 #define MESSAGE_WRONG_REQUEST_VALUE_SIZE 0x8003 #define MESSAGE_WRONG_REQUEST_VALUE_RANGE 0x8004 //Actual commands: //BINS // GLD initialization sequence: // a5 04 - external latch with DeltaPS format // a0 70 - DeltaPS 921600/921600 by request only // Other: // 80 00 - reset //BINS/AskGLD/Techno // 99 99 - maintenance //Techno // d8 90 - set bit 0 of RgConB // d8 10 - reset bit 0 of RgConB // dd 81 - periodic 38400 MRate // a0 b0 - periodic 115200/115200 DeltaPS //Registers: // RgConA - flags of regulator loops // RgConB - counting mode: 00 - reference counters, 01 - dither counters and moving average filter //User protocol typedefs typedef struct _DeviceUser { //Device address uint16_t address; //Units DeviceUserPort port; DeviceUserDecoder decoder; DeviceUserEncoder encoder; DeviceUserRequest request; DeviceUserResponse response; } DeviceUser; //User communication initialization functions void InitUserDefaultSettings(void); void InitUserState(void); void DeviceStartUser(void); #endif /* __DEVICE_USER_H__ */