From 70b507f980b4de8b265d6fd3c8cfdc5c37bda39a Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 10 Mar 2023 11:44:10 -0500 Subject: [PATCH] drivers/adc/board_adc: count number of times USB has been connected (disconnected -> connected) --- msg/SystemPower.msg | 29 +++++++++++++++++------------ src/drivers/adc/board_adc/ADC.cpp | 12 +++++++++++- src/drivers/adc/board_adc/ADC.hpp | 3 +++ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/msg/SystemPower.msg b/msg/SystemPower.msg index 21b35ba1dc..6cce6434ba 100644 --- a/msg/SystemPower.msg +++ b/msg/SystemPower.msg @@ -1,15 +1,20 @@ -uint64 timestamp # time since system start (microseconds) -float32 voltage5v_v # peripheral 5V rail voltage -float32[4] sensors3v3 # Sensors 3V3 rail voltage -uint8 sensors3v3_valid # Sensors 3V3 rail voltage was read (bitfield). -uint8 usb_connected # USB is connected when 1 -uint8 brick_valid # brick bits power is good when bit 1 -uint8 usb_valid # USB is valid when 1 -uint8 servo_valid # servo power is good when 1 -uint8 periph_5v_oc # peripheral overcurrent when 1 -uint8 hipower_5v_oc # high power peripheral overcurrent when 1 -uint8 comp_5v_valid # 5V to companion valid -uint8 can1_gps1_5v_valid # 5V for CAN1/GPS1 valid +uint64 timestamp # time since system start (microseconds) + +float32 voltage5v_v # peripheral 5V rail voltage +float32[4] sensors3v3 # Sensors 3V3 rail voltage +uint8 sensors3v3_valid # Sensors 3V3 rail voltage was read (bitfield). + +bool usb_connected # USB is connected when true +uint8 usb_connected_count # number of times USB has been connected + +uint8 brick_valid # brick bits power is good (bitfield). +bool usb_valid # USB is valid when true + +bool servo_valid # servo power is good when true +bool periph_5v_oc # peripheral overcurrent when true +bool hipower_5v_oc # high power peripheral overcurrent when true +bool comp_5v_valid # 5V to companion valid +bool can1_gps1_5v_valid # 5V for CAN1/GPS1 valid uint8 BRICK1_VALID_SHIFTS=0 uint8 BRICK1_VALID_MASK=1 diff --git a/src/drivers/adc/board_adc/ADC.cpp b/src/drivers/adc/board_adc/ADC.cpp index d69d085c01..30bbbbfd3c 100644 --- a/src/drivers/adc/board_adc/ADC.cpp +++ b/src/drivers/adc/board_adc/ADC.cpp @@ -244,7 +244,17 @@ void ADC::update_system_power(hrt_abstime now) // these are not ADC related, but it is convenient to // publish these to the same topic - system_power.usb_connected = BOARD_ADC_USB_CONNECTED; + const bool usb_connected = BOARD_ADC_USB_CONNECTED; + + if (!_usb_connected && usb_connected) { + _usb_connected_count++; + } + + _usb_connected = usb_connected; + + system_power.usb_connected = _usb_connected; + system_power.usb_connected_count = _usb_connected_count; + /* If provided used the Valid signal from HW*/ #if defined(BOARD_ADC_USB_VALID) system_power.usb_valid = BOARD_ADC_USB_VALID; diff --git a/src/drivers/adc/board_adc/ADC.hpp b/src/drivers/adc/board_adc/ADC.hpp index 14c716ec88..8b1b601ca6 100644 --- a/src/drivers/adc/board_adc/ADC.hpp +++ b/src/drivers/adc/board_adc/ADC.hpp @@ -113,6 +113,9 @@ private: uORB::Publication _to_adc_report{ORB_ID(adc_report)}; uORB::Publication _to_system_power{ORB_ID(system_power)}; + uint8_t _usb_connected_count{0}; + bool _usb_connected{false}; + #ifdef BOARD_GPIO_VDD_5V_COMP_VALID int _5v_comp_valid_fd {-1}; #endif