mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-11-29 07:24:13 +01:00
OP-1232 add a low priority flag that prevent raising the error counter in eventdispatcher, to be used for telemetry
This commit is contained in:
parent
357ebff768
commit
26f3422612
@ -268,6 +268,7 @@ static void registerObject(UAVObjHandle obj)
|
||||
.obj = obj,
|
||||
.instId = UAVOBJ_ALL_INSTANCES,
|
||||
.event = EV_UPDATED_PERIODIC,
|
||||
.lowPriority = true,
|
||||
};
|
||||
|
||||
// Get metadata
|
||||
|
@ -487,6 +487,7 @@ static int32_t setUpdatePeriod(UAVObjHandle obj, int32_t updatePeriodMs)
|
||||
ev.obj = obj;
|
||||
ev.instId = UAVOBJ_ALL_INSTANCES;
|
||||
ev.event = EV_UPDATED_PERIODIC;
|
||||
ev.lowPriority = true;
|
||||
|
||||
ret = EventPeriodicQueueUpdate(&ev, queue, updatePeriodMs);
|
||||
if (ret == -1) {
|
||||
@ -511,6 +512,7 @@ static int32_t setLoggingPeriod(UAVObjHandle obj, int32_t updatePeriodMs)
|
||||
ev.obj = obj;
|
||||
ev.instId = UAVOBJ_ALL_INSTANCES;
|
||||
ev.event = EV_LOGGING_PERIODIC;
|
||||
ev.lowPriority = true;
|
||||
|
||||
ret = EventPeriodicQueueUpdate(&ev, queue, updatePeriodMs);
|
||||
if (ret == -1) {
|
||||
|
@ -55,6 +55,7 @@ typedef struct {
|
||||
UAVObjEvent ev; /** The actual event */
|
||||
UAVObjEventCallback cb; /** The callback function, or zero if none */
|
||||
xQueueHandle queue; /** The queue or zero if none */
|
||||
bool lowpriority; /** set to true for telemetry and other low priority stuffs, prevent raising warning */
|
||||
} EventCallbackInfo;
|
||||
|
||||
/**
|
||||
@ -341,7 +342,7 @@ static int32_t processPeriodicUpdates()
|
||||
}
|
||||
// Push event to queue, if one
|
||||
if (objEntry->evInfo.queue != 0) {
|
||||
if (xQueueSend(objEntry->evInfo.queue, &objEntry->evInfo.ev, 0) != pdTRUE) { // do not block if queue is full
|
||||
if (xQueueSend(objEntry->evInfo.queue, &objEntry->evInfo.ev, 0) != pdTRUE && !objEntry->evInfo.ev.lowPriority) { // do not block if queue is full
|
||||
if (objEntry->evInfo.ev.obj != NULL) {
|
||||
mStats.lastErrorID = UAVObjGetID(objEntry->evInfo.ev.obj);
|
||||
}
|
||||
|
@ -120,6 +120,7 @@ typedef struct {
|
||||
UAVObjHandle obj;
|
||||
uint16_t instId;
|
||||
UAVObjEventType event;
|
||||
bool lowPriority; /* if true prevents raising warnings */
|
||||
} UAVObjEvent;
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user