Skip to content

Commit 8c559c2

Browse files
committed
Fix logging for imu,ahr,out,rcl
1 parent 0aec012 commit 8c559c2

7 files changed

Lines changed: 41 additions & 37 deletions

File tree

src/bar/bar.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class Bar : public BarState {
6464
const char* name() {return (gizmo ? gizmo->name() : "NONE");}
6565

6666
protected:
67-
friend void sensor_task(void *pvParameters);
67+
friend struct sensor_task_s;
6868
bool update(); // Returns true if state was updated
6969

7070
private:

src/bat/bat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class Bat : public BatState {
6767
bool installed() {return (gizmo != nullptr); } // Returns true if a gizmo was setup
6868

6969
protected:
70-
friend void sensor_task(void *pvParameters);
70+
friend struct sensor_task_s;
7171
bool update(); // Returns true if state was updated
7272

7373
private:

src/gps/gps.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Gps : public GpsState {
9292
bool installed() {return (gizmo != nullptr); } // Returns true if a gizmo was setup
9393

9494
protected:
95-
friend void sensor_task(void *pvParameters);
95+
friend struct sensor_task_s;
9696
bool update(); // Returns true if state was updated
9797

9898
private:

src/madflight.h

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ void cli_task(void *pvParameters) {
6969
}
7070
}
7171

72-
struct {
72+
struct sensor_task_s {
7373
ScheduleFreq sys_schedule = ScheduleFreq(10); // System log (10Hz)
7474
//ahr
7575
ScheduleFreq ahr_schedule = ScheduleFreq(cfg.bbx_log_ahr);
@@ -86,40 +86,44 @@ struct {
8686
//rcl
8787
ScheduleFreq rcl_schedule = ScheduleFreq(cfg.bbx_log_rcl);
8888
MsgSubscription<RclState> rcl_sub = MsgSubscription<RclState>("log_rcl", &rcl.topic);
89-
RclState rcl_state;
90-
} g_sensor_task;
89+
RclState rcl_state;
90+
91+
void run() {
92+
for(;;) {
93+
//sensors
94+
if(bar.update()) bbx.log_baro(); // barometer
95+
mag.update(); // magnetometer (logging is done with imu together)
96+
if(gps.update()) bbx.log_gps(); // gps
97+
if(bat.update()) bbx.log_bat(); // battery consumption
98+
if(rdr.update()) bbx.log_rdr(); // radar
99+
if(ofl.update()) bbx.log_ofl(); // optical flow
100+
101+
//logging
102+
if(sys_schedule.expired()) {
103+
bbx.log_sys();
104+
}
105+
if(imu_schedule.expired() && imu_sub.pull_updated(&imu_state)) {
106+
bbx.log_imu(&imu_state);
107+
}
108+
if(ahr_schedule.expired() && ahr_sub.pull_updated(&ahr_state)) {
109+
bbx.log_ahr(&ahr_state);
110+
}
111+
if(out_schedule.expired() && out_sub.pull_updated(&out_state)) {
112+
bbx.log_out(&out_state);
113+
}
114+
if(rcl_schedule.expired() && rcl_sub.pull_updated(&rcl_state)) {
115+
bbx.log_rcl(&rcl_state);
116+
}
117+
portYIELD();
118+
}
119+
}
120+
};
91121

92122
void sensor_task(void *pvParameters) {
93123
(void)pvParameters;
94124

95-
for(;;) {
96-
//sensors
97-
if(bar.update()) bbx.log_baro(); // barometer
98-
mag.update(); // magnetometer (logging is done with imu together)
99-
if(gps.update()) bbx.log_gps(); // gps
100-
if(bat.update()) bbx.log_bat(); // battery consumption
101-
if(rdr.update()) bbx.log_rdr(); // radar
102-
if(ofl.update()) bbx.log_ofl(); // optical flow
103-
104-
//logging
105-
if(g_sensor_task.sys_schedule.expired()) {
106-
bbx.log_sys();
107-
}
108-
if(g_sensor_task.imu_schedule.expired() && g_sensor_task.imu_sub.pull_updated(&g_sensor_task.imu_state)) {
109-
bbx.log_imu(&g_sensor_task.imu_state);
110-
}
111-
if(g_sensor_task.ahr_schedule.expired() && g_sensor_task.ahr_sub.pull_updated(&g_sensor_task.ahr_state)) {
112-
bbx.log_ahr(&g_sensor_task.ahr_state);
113-
}
114-
if(g_sensor_task.out_schedule.expired() && g_sensor_task.out_sub.pull_updated(&g_sensor_task.out_state)) {
115-
bbx.log_out(&g_sensor_task.out_state);
116-
}
117-
if(g_sensor_task.rcl_schedule.expired() && g_sensor_task.rcl_sub.pull_updated(&g_sensor_task.rcl_state)) {
118-
bbx.log_rcl(&g_sensor_task.rcl_state);
119-
}
120-
121-
portYIELD();
122-
}
125+
sensor_task_s *task = new sensor_task_s(); //create on heap, not on stack
126+
task->run();
123127
}
124128

125129
#define mf_xstr(s) #s

src/mag/mag.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class Mag : public MagState {
6767
void cli_calibrate();
6868

6969
protected:
70-
friend void sensor_task(void *pvParameters);
70+
friend struct sensor_task_s;
7171
bool update(); // Returns true if state was updated
7272

7373
protected:

src/ofl/ofl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class Ofl : public OflState {
6969
bool installed() {return (gizmo != nullptr); } // Returns true if a gizmo was setup
7070

7171
protected:
72-
friend void sensor_task(void *pvParameters);
72+
friend struct sensor_task_s;
7373
bool update(); // Returns true if state was updated
7474

7575
private:

src/rdr/rdr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class Rdr : public RdrState {
6464
bool installed() {return (gizmo != nullptr); } // Returns true if a gizmo was setup
6565

6666
protected:
67-
friend void sensor_task(void *pvParameters);
67+
friend struct sensor_task_s;
6868
bool update(); // Returns true if state was updated
6969

7070
private:

0 commit comments

Comments
 (0)