123
Fork of LG by
DeviceSequencer.h
- Committer:
- Kovalev_D
- Date:
- 2016-10-19
- Revision:
- 197:7a05523bf588
- Parent:
- 173:7f938afb0447
File content as of revision 197:7a05523bf588:
#ifndef __DEVICE_SEQUENCER_H__ #define __DEVICE_SEQUENCER_H__ //Sampler typedefs typedef struct _DeviceSequencerSamplerSettings { uint8_t enabled; //Enable sequence generation uint32_t amplitude; //Generator analog output amplitude - volts in 16.16 format int32_t sequence[64]; //Generator sequence - dimensionless units -1...+1 in 16.16 format uint8_t position[2]; //Sequence position } DeviceSequencerSamplerSettings; typedef struct _DeviceSequencerSamplerState { uint8_t enabled; //Enable sequence generation uint32_t amplitude; //Generator analog output amplitude - volts in 16.16 format uint8_t position[2]; //Sequence position uint32_t sample[2]; //Sequencer analog output = sequence[]: current/delayed - dimensionless units -1...+1 in 16.16 format uint32_t voltage; //Sequencer analog output = sequence[] * amplitude - volts in 16.16 format } DeviceSequencerSamplerState; typedef struct _DeviceSequencerSampler { DeviceSequencerSamplerSettings settings; DeviceSequencerSamplerState state; } DeviceSequencerSampler; //Analog output typedefs typedef struct _DeviceSequencerAnalogOutputTransferFunction { uint32_t points; //Number of actual control points (up to 16) int32_t voltage[16]; //Output voltage control points in signed 16.16 fixed point format int32_t code[16]; //DAC code control points } DeviceSequencerAnalogOutputTransferFunction; typedef struct _DeviceSequencerAnalogOutputSettings { uint8_t enabled; //Enable analog output DeviceSequencerAnalogOutputTransferFunction transfer; } DeviceSequencerAnalogOutputSettings; typedef struct _DeviceSequencerAnalogOutputState { uint8_t enabled; //Enable analog output uint32_t voltage; //Sequencer analog output = sequence[] * amplitude - volts in 16.16 format } DeviceSequencerAnalogOutputState; typedef struct _DeviceSequencerAnalogOutput { DeviceSequencerAnalogOutputSettings settings; DeviceSequencerAnalogOutputState state; } DeviceSequencerAnalogOutput; //Logic output typedefs typedef struct _DeviceSequencerLogicOutputSettings { uint8_t enabled; //Enable logic (GPIO pin) output } DeviceSequencerLogicOutputSettings; typedef struct _DeviceSequencerLogicOutputState { uint8_t enabled; //Enable logic (GPIO pin) output uint32_t level; //Sequencer logic output - 0/1 } DeviceSequencerLogicOutputState; typedef struct _DeviceSequencerLogicOutput { DeviceSequencerLogicOutputSettings settings; DeviceSequencerLogicOutputState state; } DeviceSequencerLogicOutput; typedef struct _DeviceSequencerOutput { DeviceSequencerLogicOutput logic; DeviceSequencerAnalogOutput analog; } DeviceSequencerOutput; //Sequencer typedefs typedef struct _DeviceSequencerOutputTransferFunction { uint32_t points; //Number of actual control points (up to 16) int32_t voltage[16]; //Output voltage control points in signed 16.16 fixed point format int32_t code[16]; //DAC code control points } DeviceSequencerOutputTransferFunction; typedef struct _DeviceSequencerSettings { uint8_t enabled; //Enable sequence generation uint8_t analog; //Modulate analog (voltage) output uint8_t logic; //Modulate logic (GPIO pin) output int32_t amplitude; //Generator analog output amplitude - volts in 16.16 format int32_t sequence[64]; //Generator sequence - dimensionless units -1...+1 in 16.16 format uint8_t position[2]; //Sequence position DeviceSequencerOutputTransferFunction transfer; } DeviceSequencerSettings; typedef struct _DeviceSequencerState { uint8_t enabled; //Enable sequence generation uint8_t analog; //Modulate analog (voltage) output uint8_t logic; //Modulate logic (GPIO pin) output uint32_t amplitude; //Generator analog output amplitude - volts in 16.16 format uint8_t position[2]; //Sequence position uint32_t sample[2]; //Sequencer analog output = sequence[]: current/delayed - dimensionless units -1...+1 in 16.16 format uint32_t voltage; //Sequencer analog output = sequence[] * amplitude - volts in 16.16 format } DeviceSequencerState; typedef struct _DeviceSequencer { //DeviceSequencerSettings settings; //DeviceSequencerState state; DeviceSequencerSampler sampler; DeviceSequencerOutput output; } DeviceSequencer; void InitSequencerDefaultSettings(void); void InitSequencerState(void); void DeviceStartSequencer(void); void sequencerProcess(void); #endif /* __DEVICE_SEQUENCER_H__ */