/* * PWMSingleInterace.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "PERIPHERY/PWMInterface.h" #ifndef CELLQAUNTITYINPHASE #define CELLQAUNTITYINPHASE 5 #endif #ifndef PERIPHERY_PWMSINGLEINTERFACE_H_ #define PERIPHERY_PWMSINGLEINTERFACE_H_ namespace PERIPHERY { struct PWMSInterfaceConfiguration: public PWMInterfaceConfiguration { uint16_t cascade_quantity; uint16_t cell_quantity; uint16_t cell_quantity_in_cascade[18]; PWMSInterfaceConfiguration(): PWMInterfaceConfiguration(), cascade_quantity(), cell_quantity(0), cell_quantity_in_cascade() {} };//PWMSingleStructureConfiguration class PWMSInterace: public PWMInterface { private: PWMPhaseStructure m_phase; PWMHardFaultRegister m_hard_fault; public: PWMSInterace(); public: void setup(uint16_t *memzone); void setup(const PWMStructureSetup& setup); void setup(uint16_t *memzone, const PWMStructureSetup& setup); private: void _setup_phase(PWMPhaseStructure& phase, uint16_t *base); public: void set_frequency(uint16_t freq); //void set_cascade_quantity(uint16_t quant); void set_cell_quantity_phase(uint16_t quant); void set_cmp(uint16_t cmpr); void set_order(uint16_t order); void get_board_state(uint16_t& statebard); void get_sw_version(uint16_t& version); void get_breakdown_cell_state(uint16_t& cellstate); void get_breakdown_cell_index(uint16_t& cellindex); void set_cell_quantity_cascade(uint16_t cascadenum, uint16_t quant); // void broadcast_order(uint16_t order); void broadcast_cell_quantity_phase(uint16_t quant); void broadcast_freq(uint16_t freq); // void get_hard_fault(uint16_t& hard_fault); // void get_indirect_access(uint16_t cascade, uint16_t cell, uint16_t offset, uint16_t& telemetry); // void telemetry_execute(PWMSInterfaceConfiguration& config, PWMPhaseTelemetryValue& telemetry_phase); void reset_telemetry(); void set_telemetry_sequence_one(); void set_telemetry_sequence_two(); // private: void (PWMSInterace::*_telemetry_execute)(PWMSInterfaceConfiguration& config, PWMPhaseTelemetryValue& telemetry_phase); void _telemetry_sequence_one(PWMSInterfaceConfiguration& config, PWMPhaseTelemetryValue& telemetry_phase); void _telemetry_sequence_two(PWMSInterfaceConfiguration& config, PWMPhaseTelemetryValue& telemetry_phase); // };//class } /* namespace PERIPHERY */ #endif /* PERIPHERY_PWMSINGLEINTERFACE_H_ */