Pico Core
Loading...
Searching...
No Matches
harp_c_app.h
Go to the documentation of this file.
1#ifndef HARP_C_APP_H
2#define HARP_C_APP_H
3#include <harp_core.h>
4#include <core_registers.h>
5#include <reg_types.h>
6
13class HarpCApp: public HarpCore
14{
15
16// Make constructor private to prevent creating instances outside of init().
17private:
30 HarpCApp(uint16_t who_am_i,
31 uint8_t hw_version_major, uint8_t hw_version_minor,
32 uint8_t assembly_version,
33 uint8_t harp_version_major, uint8_t harp_version_minor,
34 uint8_t fw_version_major, uint8_t fw_version_minor,
35 uint16_t serial_number, const char name[],
36 const uint8_t tag[],
37 void* app_reg_values, RegSpecs* app_reg_specs,
38 RegFnPair* reg_fns, size_t app_reg_count,
39 void (* update_fn)(void), void (* reset_fn)(void));
40
41 ~HarpCApp();
42
43public:
44 HarpCApp() = delete; // Disable default constructor.
45 HarpCApp(HarpCApp& other) = delete; // Disable copy constructor.
46 void operator=(const HarpCApp& other) = delete; // Disable assignment operator.
47
51 static HarpCApp& init(uint16_t who_am_i,
52 uint8_t hw_version_major, uint8_t hw_version_minor,
53 uint8_t assembly_version,
54 uint8_t harp_version_major, uint8_t harp_version_minor,
55 uint8_t fw_version_major, uint8_t fw_version_minor,
56 uint16_t serial_number, const char name[],
57 const uint8_t tag[],
58 void* app_reg_values, RegSpecs* app_reg_specs,
59 RegFnPair* reg_fns, size_t app_reg_count,
60 void (* update_fn)(void), void (*reset_fn)(void));
61
62 static inline HarpCApp* self = nullptr; // pointer to the singleton instance.
63 static HarpCApp& instance() {return *self;}
64
65private:
70 void handle_buffered_app_message();
71
76 void update_app_state()
77 {update_fn_();}
78
83 void reset_app()
84 {reset_fn_();}
85
90 void dump_app_registers();
91
98 const RegSpecs& address_to_app_reg_specs(uint8_t address)
99 {return reg_specs_[address - APP_REG_START_ADDRESS];}
100
101// Private Members
102 void* reg_values_;
103 RegSpecs* reg_specs_;
104 RegFnPair* reg_fns_;
105 size_t reg_count_;
106 void (* update_fn_)(void);
107 void (* reset_fn_)(void);
108};
109
110#endif //HARP_C_APP_H
Harp Core that handles management of common bank registers. Implemented as a singleton to simplify at...
Definition harp_core.h:48
#define APP_REG_START_ADDRESS
Definition core_registers.h:10
Definition harp_core.h:37
Definition core_registers.h:90