dmonitoring_publish: use kj::ArrayPtr<const float> raw_pred as paramater instead of float (#19916)

old-commit-hash: 8bb3c41cfd
commatwo_master
Dean Lee 4 years ago committed by GitHub
parent bfa5674d4f
commit 1a29755702
  1. 3
      selfdrive/modeld/dmonitoringmodeld.cc
  2. 4
      selfdrive/modeld/models/dmonitoring.cc
  3. 2
      selfdrive/modeld/models/dmonitoring.h

@ -52,8 +52,7 @@ int main(int argc, char **argv) {
double t2 = millis_since_boot(); double t2 = millis_since_boot();
// send dm packet // send dm packet
const float* raw_pred_ptr = send_raw_pred ? (const float *)dmonitoringmodel.output : nullptr; dmonitoring_publish(pm, extra.frame_id, res, (t2-t1)/1000.0, dmonitoringmodel.output);
dmonitoring_publish(pm, extra.frame_id, res, raw_pred_ptr, (t2-t1)/1000.0);
LOGD("dmonitoring process: %.2fms, from last %.2fms", t2-t1, t1-last); LOGD("dmonitoring process: %.2fms, from last %.2fms", t2-t1, t1-last);
last = t1; last = t1;

@ -177,7 +177,7 @@ DMonitoringResult dmonitoring_eval_frame(DMonitoringModelState* s, void* stream_
return ret; return ret;
} }
void dmonitoring_publish(PubMaster &pm, uint32_t frame_id, const DMonitoringResult &res, const float* raw_pred, float execution_time){ void dmonitoring_publish(PubMaster &pm, uint32_t frame_id, const DMonitoringResult &res, float execution_time, kj::ArrayPtr<const float> raw_pred){
// make msg // make msg
MessageBuilder msg; MessageBuilder msg;
auto framed = msg.initEvent().initDriverState(); auto framed = msg.initEvent().initDriverState();
@ -196,7 +196,7 @@ void dmonitoring_publish(PubMaster &pm, uint32_t frame_id, const DMonitoringResu
framed.setRightBlinkProb(res.right_blink_prob); framed.setRightBlinkProb(res.right_blink_prob);
framed.setSgProb(res.sg_prob); framed.setSgProb(res.sg_prob);
if (send_raw_pred) { if (send_raw_pred) {
framed.setRawPred(kj::arrayPtr((const uint8_t*)raw_pred, OUTPUT_SIZE*sizeof(float))); framed.setRawPred(raw_pred.asBytes());
} }
pm.send("driverState", msg); pm.send("driverState", msg);

@ -34,6 +34,6 @@ typedef struct DMonitoringModelState {
void dmonitoring_init(DMonitoringModelState* s); void dmonitoring_init(DMonitoringModelState* s);
DMonitoringResult dmonitoring_eval_frame(DMonitoringModelState* s, void* stream_buf, int width, int height); DMonitoringResult dmonitoring_eval_frame(DMonitoringModelState* s, void* stream_buf, int width, int height);
void dmonitoring_publish(PubMaster &pm, uint32_t frame_id, const DMonitoringResult &res, const float* raw_pred, float execution_time); void dmonitoring_publish(PubMaster &pm, uint32_t frame_id, const DMonitoringResult &res, float execution_time, kj::ArrayPtr<const float> raw_pred);
void dmonitoring_free(DMonitoringModelState* s); void dmonitoring_free(DMonitoringModelState* s);

Loading…
Cancel
Save