123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Diletant
Date:
Sun Jun 26 10:16:39 2016 +0000
Revision:
174:0f86eedd511c
Device&... update. Not final!!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Diletant 174:0f86eedd511c 1 #ifndef __DEVICE_EM_H__
Diletant 174:0f86eedd511c 2 #define __DEVICE_EM_H__
Diletant 174:0f86eedd511c 3
Diletant 174:0f86eedd511c 4 //Bias model #1 typedefs
Diletant 174:0f86eedd511c 5 // Error = m[0] + m[1] * T + m[2] * dT
Diletant 174:0f86eedd511c 6 typedef struct _DeviceEMBias1Settings {
Diletant 174:0f86eedd511c 7 int32_t enabled;
Diletant 174:0f86eedd511c 8 int32_t m[3];
Diletant 174:0f86eedd511c 9 } DeviceEMBias1Settings;
Diletant 174:0f86eedd511c 10
Diletant 174:0f86eedd511c 11 typedef struct _DeviceEMBias1State {
Diletant 174:0f86eedd511c 12 int32_t enabled;
Diletant 174:0f86eedd511c 13 int32_t ppm; //Accumulated angle error - millionth part in signed 16.16 format
Diletant 174:0f86eedd511c 14 int32_t error; //Accumulated angle error - pulses in signed 16.16 format
Diletant 174:0f86eedd511c 15 } DeviceEMBias1State;
Diletant 174:0f86eedd511c 16
Diletant 174:0f86eedd511c 17 typedef struct _DeviceEMBias1 {
Diletant 174:0f86eedd511c 18 DeviceEMBias1Settings settings;
Diletant 174:0f86eedd511c 19 DeviceEMBias1State state;
Diletant 174:0f86eedd511c 20 } DeviceEMBias1;
Diletant 174:0f86eedd511c 21
Diletant 174:0f86eedd511c 22 //Bias model #2 typedefs
Diletant 174:0f86eedd511c 23 // Error = f(T), f(T) - piecewise linear interpolation
Diletant 174:0f86eedd511c 24 typedef struct _DeviceEMBias2Function {
Diletant 174:0f86eedd511c 25 int32_t points;
Diletant 174:0f86eedd511c 26 int32_t celsius[16]; //Temperature - celsius in signed 16.16 format
Diletant 174:0f86eedd511c 27 int32_t ppm[16]; //Accumulated angle correction per dither cycle interval - ppm in signed 16.16 format
Diletant 174:0f86eedd511c 28 } DeviceEMBias2Function;
Diletant 174:0f86eedd511c 29
Diletant 174:0f86eedd511c 30 typedef struct _DeviceEMBias2Settings {
Diletant 174:0f86eedd511c 31 int32_t enabled;
Diletant 174:0f86eedd511c 32 DeviceEMBias2Function tc;
Diletant 174:0f86eedd511c 33 } DeviceEMBias2Settings;
Diletant 174:0f86eedd511c 34
Diletant 174:0f86eedd511c 35 typedef struct _DeviceEMBias2State {
Diletant 174:0f86eedd511c 36 int32_t enabled;
Diletant 174:0f86eedd511c 37 int32_t ppm; //Accumulated angle error - millionth part in signed 16.16 format
Diletant 174:0f86eedd511c 38 int32_t error; //Accumulated angle error - pulses in signed 16.16 format
Diletant 174:0f86eedd511c 39 } DeviceEMBias2State;
Diletant 174:0f86eedd511c 40
Diletant 174:0f86eedd511c 41 typedef struct _DeviceEMBias2 {
Diletant 174:0f86eedd511c 42 DeviceEMBias2Settings settings;
Diletant 174:0f86eedd511c 43 DeviceEMBias2State state;
Diletant 174:0f86eedd511c 44 } DeviceEMBias2;
Diletant 174:0f86eedd511c 45
Diletant 174:0f86eedd511c 46 //Scale error model typedefs
Diletant 174:0f86eedd511c 47 //typedef struct _DeviceEMScale1 {
Diletant 174:0f86eedd511c 48 // DeviceEMScale1Settings settings;
Diletant 174:0f86eedd511c 49 // DeviceEMScale1State state;
Diletant 174:0f86eedd511c 50 //} DeviceEMScale1;
Diletant 174:0f86eedd511c 51
Diletant 174:0f86eedd511c 52 //Total error model typedefs
Diletant 174:0f86eedd511c 53 typedef struct _DeviceEMErrorSettings {
Diletant 174:0f86eedd511c 54 } DeviceEMErrorSettings;
Diletant 174:0f86eedd511c 55
Diletant 174:0f86eedd511c 56 typedef struct _DeviceEMErrorState {
Diletant 174:0f86eedd511c 57 int32_t ppm; //Accumulated angle error - millionth part in signed 16.16 format
Diletant 174:0f86eedd511c 58 int32_t correction; //Accumulated angle error - pulses in signed 16.16 format
Diletant 174:0f86eedd511c 59 } DeviceEMErrorState;
Diletant 174:0f86eedd511c 60
Diletant 174:0f86eedd511c 61 typedef struct _DeviceEMError {
Diletant 174:0f86eedd511c 62 DeviceEMErrorSettings settings;
Diletant 174:0f86eedd511c 63 DeviceEMErrorState state;
Diletant 174:0f86eedd511c 64 } DeviceEMError;
Diletant 174:0f86eedd511c 65
Diletant 174:0f86eedd511c 66 typedef struct _DeviceEM {
Diletant 174:0f86eedd511c 67 DeviceEMBias1 bias1; //Bias error model #1
Diletant 174:0f86eedd511c 68 DeviceEMBias2 bias2; //Bias error model #2
Diletant 174:0f86eedd511c 69 //DeviceEMScale1 scale1; //Scale factor error model #1
Diletant 174:0f86eedd511c 70 DeviceEMError error; //Total error
Diletant 174:0f86eedd511c 71 } DeviceEM;
Diletant 174:0f86eedd511c 72
Diletant 174:0f86eedd511c 73 void InitEMDefaultSettings(void);
Diletant 174:0f86eedd511c 74 void InitEMState(void);
Diletant 174:0f86eedd511c 75 void DeviceStartEM(void);
Diletant 174:0f86eedd511c 76
Diletant 174:0f86eedd511c 77 void emProcess(void);
Diletant 174:0f86eedd511c 78
Diletant 174:0f86eedd511c 79 #endif /* __DEVICE_EM_H__ */