X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fcore%2Fao_monitor.c;h=382af8a2a2b101426aaea54d3af82eb0a74fc3f7;hp=6f2d9dbb3d3bac0a626491b3d217bb00d3213c61;hb=7c6a3195dec6ac68f5d7b3f883ccc2c316384e76;hpb=b33a92e372327158ab21c1bb2d091c58761efe10 diff --git a/src/core/ao_monitor.c b/src/core/ao_monitor.c index 6f2d9dbb..382af8a2 100644 --- a/src/core/ao_monitor.c +++ b/src/core/ao_monitor.c @@ -55,7 +55,15 @@ ao_monitor_get(void) continue; ao_monitor_head = ao_monitor_ring_next(ao_monitor_head); ao_wakeup(DATA_TO_XDATA(&ao_monitor_head)); - ao_led_toggle(ao_monitor_led); + } +} + +void +ao_monitor_blink(void) +{ + for (;;) { + ao_sleep(DATA_TO_XDATA(&ao_monitor_head)); + ao_led_for(ao_monitor_led, AO_MS_TO_TICKS(100)); } } @@ -151,7 +159,9 @@ ao_monitor_put(void) ao_gps_print(&recv_orig.telemetry_orig.gps); ao_gps_tracking_print(&recv_orig.telemetry_orig.gps_tracking); putchar('\n'); +#if HAS_RSSI ao_rssi_set(rssi); +#endif } else { printf("CRC INVALID RSSI %3d\n", rssi); } @@ -214,7 +224,9 @@ ao_monitor_put(void) recv_tiny.telemetry_tiny.flight_vel, recv_tiny.telemetry_tiny.flight_pres); #endif +#if HAS_RSSI ao_rssi_set(rssi); +#endif } else { printf("CRC INVALID RSSI %3d\n", rssi); } @@ -228,6 +240,12 @@ ao_monitor_put(void) printf("%02x", byte); } printf("%02x\n", sum); +#if HAS_RSSI + if (recv_raw.packet[ao_monitoring + 1] & PKT_APPEND_STATUS_1_CRC_OK) { + rssi = ((int16_t) recv_raw.packet[ao_monitoring] >> 1) - 74; + ao_rssi_set(rssi); + } +#endif break; } ao_usb_flush(); @@ -236,6 +254,7 @@ ao_monitor_put(void) __xdata struct ao_task ao_monitor_get_task; __xdata struct ao_task ao_monitor_put_task; +__xdata struct ao_task ao_monitor_blink_task; void ao_set_monitor(uint8_t monitoring) @@ -266,4 +285,6 @@ ao_monitor_init(uint8_t monitor_led, uint8_t monitoring) __reentrant ao_cmd_register(&ao_monitor_cmds[0]); ao_add_task(&ao_monitor_get_task, ao_monitor_get, "monitor_get"); ao_add_task(&ao_monitor_put_task, ao_monitor_put, "monitor_put"); + if (ao_monitor_led) + ao_add_task(&ao_monitor_blink_task, ao_monitor_blink, "monitor_blink"); }