diff --git a/src/attributes/ctrlm_attr_general.cpp b/src/attributes/ctrlm_attr_general.cpp index a533e6fc..80a6edb9 100644 --- a/src/attributes/ctrlm_attr_general.cpp +++ b/src/attributes/ctrlm_attr_general.cpp @@ -76,7 +76,7 @@ bool ctrlm_string_db_attr_t::read_db(ctrlm_db_ctx_t ctx) { if(blob.read_db(ctx)) { this->value = blob.to_string(); ret = true; - XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to read from db <%s>", this->get_name().c_str()); } @@ -90,7 +90,7 @@ bool ctrlm_string_db_attr_t::write_db(ctrlm_db_ctx_t ctx) { if(blob.from_string(this->value)) { if(blob.write_db(ctx)) { ret = true; - XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str()); } @@ -157,7 +157,7 @@ bool ctrlm_uint64_db_attr_t::read_db(ctrlm_db_ctx_t ctx) { if(data.read_db(ctx)) { this->set_value(data.get_uint64()); ret = true; - XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to read from db <%s>", this->get_name().c_str()); } @@ -169,7 +169,7 @@ bool ctrlm_uint64_db_attr_t::write_db(ctrlm_db_ctx_t ctx) { ctrlm_db_uint64_t data(this->get_key(), this->get_table(), this->get_value()); if(data.write_db(ctx)) { ret = true; - XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str()); } @@ -237,7 +237,7 @@ bool ctrlm_ieee_db_addr_t::read_db(ctrlm_db_ctx_t ctx) { if(data.read_db(ctx)) { this->set_value(data.get_uint64()); ret = true; - XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to read from db <%s>", this->get_name().c_str()); } @@ -249,7 +249,7 @@ bool ctrlm_ieee_db_addr_t::write_db(ctrlm_db_ctx_t ctx) { ctrlm_db_uint64_t data(this->get_key(), this->get_table(), this->get_value()); if(data.write_db(ctx)) { ret = true; - XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str()); } diff --git a/src/attributes/ctrlm_attr_voice.cpp b/src/attributes/ctrlm_attr_voice.cpp index 87f1759d..963b3b09 100644 --- a/src/attributes/ctrlm_attr_voice.cpp +++ b/src/attributes/ctrlm_attr_voice.cpp @@ -256,7 +256,7 @@ bool ctrlm_voice_metrics_t::read_db(ctrlm_db_ctx_t ctx) { this->utterances_exceeding_packet_loss_threshold_today = ((buf[39] << 24) | (buf[38] << 16) | (buf[37] << 8) | buf[36]); this->utterances_exceeding_packet_loss_threshold_yesterday = ((buf[43] << 24) | (buf[42] << 16) | (buf[41] << 8) | buf[40]); ret = true; - XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("data from db is too small <%s>", this->get_name().c_str()); } @@ -322,7 +322,7 @@ bool ctrlm_voice_metrics_t::write_db(ctrlm_db_ctx_t ctx) { if(blob.from_buffer(buf, sizeof(buf))) { if(blob.write_db(ctx)) { ret = true; - XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str()); } diff --git a/src/ble/ctrlm_ble_controller.cpp b/src/ble/ctrlm_ble_controller.cpp index f1a87c22..c9e996c9 100644 --- a/src/ble/ctrlm_ble_controller.cpp +++ b/src/ble/ctrlm_ble_controller.cpp @@ -58,7 +58,7 @@ ctrlm_obj_controller_ble_t::ctrlm_obj_controller_ble_t(ctrlm_controller_id_t con wakeup_custom_list_(), irdbs_supported_(0) { - XLOGD_INFO("constructor - controller id <%u>", controller_id); + XLOGD_DEBUG("constructor - controller id <%u>", controller_id); voice_metrics_->read_config(); ieee_address_->set_num_bytes(6); @@ -66,7 +66,7 @@ ctrlm_obj_controller_ble_t::ctrlm_obj_controller_ble_t(ctrlm_controller_id_t con } ctrlm_obj_controller_ble_t::ctrlm_obj_controller_ble_t() { - XLOGD_INFO("default constructor"); + XLOGD_DEBUG("default constructor"); } void ctrlm_obj_controller_ble_t::db_create() { diff --git a/src/ble/ctrlm_ble_controller_attr_version.cpp b/src/ble/ctrlm_ble_controller_attr_version.cpp index 0bfd0a41..9ffb9077 100644 --- a/src/ble/ctrlm_ble_controller_attr_version.cpp +++ b/src/ble/ctrlm_ble_controller_attr_version.cpp @@ -40,7 +40,7 @@ bool ctrlm_ble_sw_version_t::read_db(ctrlm_db_ctx_t ctx) { if(blob.read_db(ctx)) { if (this->from_string(blob.to_string())) { ret = true; - XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("%s read from database failed to parse <%s> ", this->get_name().c_str(), blob.to_string().c_str()); } @@ -58,7 +58,7 @@ bool ctrlm_ble_sw_version_t::write_db(ctrlm_db_ctx_t ctx) { if(blob.from_string(ver_str)) { if(blob.write_db(ctx)) { ret = true; - XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str()); } @@ -90,7 +90,7 @@ bool ctrlm_ble_hw_version_t::read_db(ctrlm_db_ctx_t ctx) { if(blob.read_db(ctx)) { if (this->from_string(blob.to_string())) { ret = true; - XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("%s read from database failed to parse <%s> ", this->get_name().c_str(), blob.to_string().c_str()); } @@ -108,7 +108,7 @@ bool ctrlm_ble_hw_version_t::write_db(ctrlm_db_ctx_t ctx) { if(blob.from_string(ver_str)) { if(blob.write_db(ctx)) { ret = true; - XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); + XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str()); } else { XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str()); } diff --git a/src/ble/ctrlm_ble_network.cpp b/src/ble/ctrlm_ble_network.cpp index ab094c0e..c6bdce72 100644 --- a/src/ble/ctrlm_ble_network.cpp +++ b/src/ble/ctrlm_ble_network.cpp @@ -56,6 +56,11 @@ using namespace std; #define CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT (MINUTE_IN_MILLISECONDS * 5) // 5 minutes #define CTRLM_BLE_UPGRADE_PAUSE_TIMEOUT (MINUTE_IN_MILLISECONDS * 2) // 2 minutes +#define CTRLM_BLE_PRINT_STATUS_TIMEOUT (1000 * 6) // 6 seconds +#define CTRLM_BLE_EVENT_STATUS_TIMEOUT (1000 * 6) // 6 seconds +#define CTRLM_BLE_PRINT_STATUS_DEFER_MAX (20) +#define CTRLM_BLE_EVENT_STATUS_DEFER_MAX (20) + #define CTRLM_VENDOR_BLE_NETWORK_DISABLE_FILE "/etc/vendor/input/ble_network_disable" #define CTRLM_VENDOR_BLE_REMOTE_WHITELIST_FILE "/etc/vendor/input/ble_remote_whitelist.json" #define CTRLM_VENDOR_BLE_NETWORK_OPTIONS_FILE "/etc/vendor/input/ble_network_options.json" @@ -64,6 +69,8 @@ using namespace std; typedef struct { guint upgrade_controllers_timer_tag; guint upgrade_pause_timer_tag; + guint print_status_timer_tag; + guint event_status_timer_tag; } ctrlm_ble_network_t; static ctrlm_ble_network_t g_ctrlm_ble_network; @@ -77,8 +84,11 @@ static const vector ctrlm_ble_ir_key_names { }; -static gboolean ctrlm_ble_upgrade_controllers(gpointer user_data); -static gboolean ctrlm_ble_upgrade_resume(gpointer user_data); +static gboolean ctrlm_ble_print_status_timer_cb(gpointer user_data); +static gboolean ctrlm_ble_event_status_timer_cb(gpointer user_data); + +static gboolean ctrlm_ble_upgrade_controllers_timer_cb(gpointer user_data); +static gboolean ctrlm_ble_upgrade_resume_timer_cb(gpointer user_data); static bool ctrlm_ble_parse_upgrade_image_info(const std::string &filename, ctrlm_ble_upgrade_image_info_t &image_info); ctrlm_ble_unpair_metrics_t::ctrlm_ble_unpair_metrics_t() @@ -288,6 +298,8 @@ ctrlm_obj_network_ble_t::ctrlm_obj_network_ble_t(ctrlm_network_type_t type, ctrl init_result_ = CTRLM_HAL_RESULT_ERROR; ready_ = false; voice_disabled_ = false; + print_status_defer_count_ = 0; + event_status_defer_count_ = 0; g_ctrlm_ble_network.upgrade_controllers_timer_tag = 0; g_ctrlm_ble_network.upgrade_pause_timer_tag = 0; @@ -325,6 +337,8 @@ ctrlm_obj_network_ble_t::~ctrlm_obj_network_ble_t() { ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_controllers_timer_tag); ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_pause_timer_tag); + ctrlm_timeout_destroy(&g_ctrlm_ble_network.event_status_timer_tag); + ctrlm_timeout_destroy(&g_ctrlm_ble_network.print_status_timer_tag); ctrlm_ble_iarm_terminate(); @@ -414,20 +428,18 @@ void ctrlm_obj_network_ble_t::start(GMainLoop* main_loop) } } - // Print out pairing table - XLOGD_INFO("===================================================================="); - XLOGD_INFO(" %u Bound Controllers", controllers_.size()); - XLOGD_INFO("===================================================================="); + XLOGD_INFO("%u bound BLE controllers", controllers_.size()); for(auto &controller : controllers_) { if (controller.second->is_stale(this->stale_remote_time_threshold_get())) { XLOGD_TELEMETRY("Stale remote suspected: <%s>", controller.second->ieee_address_get().to_string().c_str()); } - controller.second->print_status(); } + schedule_status_print(); + // Read IR RF Database from database ir_rf_database_.load_db(); - XLOGD_INFO("\n%s", this->ir_rf_database_.to_string(true).c_str()); + XLOGD_INFO("\n%s", this->ir_rf_database_.to_string(false).c_str()); } @@ -782,7 +794,8 @@ void ctrlm_obj_network_ble_t::req_process_program_ir_codes(void *data, int size) // First add IR Codes to the IR RF Database (this contains all of the logic for maintaining TV vs AVR codes) ir_rf_database_.add_irdb_codes(dqm->ir_codes); - XLOGD_INFO("\n%s", this->ir_rf_database_.to_string(true).c_str()); + XLOGD_INFO("\n%s", this->ir_rf_database_.to_string(false).c_str()); + XLOGD_DEBUG("\n%s", this->ir_rf_database_.to_string(true).c_str()); // Now get the IR codes for the BLE IR slots for(auto key : ctrlm_ble_ir_key_names) { if(ir_rf_database_.has_entry(key)) { @@ -846,7 +859,7 @@ void ctrlm_obj_network_ble_t::req_process_ir_clear_codes(void *data, int size) { } else { success = true; ir_rf_database_.clear_ir_codes(); - XLOGD_INFO("\n%s", ir_rf_database_.to_string(true).c_str()); + XLOGD_INFO("\n%s", ir_rf_database_.to_string(false).c_str()); controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_TV, "0"); controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_AVR, "0"); } @@ -1272,7 +1285,7 @@ void ctrlm_obj_network_ble_t::clearUpgradeImages() { upgrade_images_.clear(); } -static gboolean ctrlm_ble_upgrade_controllers(gpointer user_data) { +static gboolean ctrlm_ble_upgrade_controllers_timer_cb(gpointer user_data) { ctrlm_network_id_t* net_id = (ctrlm_network_id_t*) user_data; if (net_id != NULL) { // Allocate a message and send it to Control Manager's queue @@ -1287,7 +1300,7 @@ static gboolean ctrlm_ble_upgrade_controllers(gpointer user_data) { return false; } -static gboolean ctrlm_ble_upgrade_resume(gpointer user_data) { +static gboolean ctrlm_ble_upgrade_resume_timer_cb(gpointer user_data) { ctrlm_network_id_t* net_id = (ctrlm_network_id_t*) user_data; if (net_id != NULL) { // Allocate a message and send it to Control Manager's queue @@ -1371,7 +1384,7 @@ void ctrlm_obj_network_ble_t::req_process_upgrade_controllers(void *data, int si // simply will not take the reboot and the software revision will remain unchanged. XLOGD_DEBUG("Upgrading one remote at a time, setting timer for %d minutes to check if other remotes need upgrades.", CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT / MINUTE_IN_MILLISECONDS); ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_controllers_timer_tag); - g_ctrlm_ble_network.upgrade_controllers_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT, ctrlm_ble_upgrade_controllers, &id_); + g_ctrlm_ble_network.upgrade_controllers_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT, ctrlm_ble_upgrade_controllers_timer_cb, &id_); return; } else { XLOGD_INFO("Software upgrade not required for controller %s.", controller.second->ieee_address_get().to_string().c_str()); @@ -1403,7 +1416,7 @@ void ctrlm_obj_network_ble_t::req_process_upgrade_controllers(void *data, int si } else { XLOGD_INFO("Upgrade currently in progress, setting timer for %d minutes to check if other remotes need upgrades.", CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT / MINUTE_IN_MILLISECONDS); ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_controllers_timer_tag); - g_ctrlm_ble_network.upgrade_controllers_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT, ctrlm_ble_upgrade_controllers, &id_); + g_ctrlm_ble_network.upgrade_controllers_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT, ctrlm_ble_upgrade_controllers_timer_cb, &id_); } } @@ -1667,10 +1680,7 @@ void ctrlm_obj_network_ble_t::ind_rcu_status(ctrlm_hal_ble_RcuStatusData_t *para } void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { - // XLOGD_DEBUG("Enter..."); THREAD_ID_VALIDATE(); - bool report_status = true; - bool print_status = true; ctrlm_hal_ble_RcuStatusData_t *dqm = (ctrlm_hal_ble_RcuStatusData_t *)data; g_assert(dqm); @@ -1687,19 +1697,25 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { // These properties are associated with the network, not a specific RCU case CTRLM_HAL_BLE_PROPERTY_IS_PAIRING: // don't send up status event for this since CTRLM_HAL_BLE_PROPERTY_STATE handles all pairing states. - report_status = false; - print_status = false; break; case CTRLM_HAL_BLE_PROPERTY_PAIRING_CODE: - report_status = false; // don't send up status event for this. break; case CTRLM_HAL_BLE_PROPERTY_STATE: XLOGD_TELEMETRY("BLE remote RF pairing state changed to <%s>", ctrlm_rf_pair_state_str(dqm->state)); state_ = dqm->state; + if (state_ == CTRLM_RF_PAIR_STATE_COMPLETE || state_ == CTRLM_RF_PAIR_STATE_IDLE) { + // allow some time for all remote data to be received before sending the event to avoid multiple events + schedule_status_event(); + } else { + // for any other states, send event immediately. + schedule_status_event(true); + } break; case CTRLM_HAL_BLE_PROPERTY_IR_STATE: XLOGD_TELEMETRY("BLE remote IR programming state changed to <%s>", ctrlm_ir_state_str(dqm->ir_state)); ir_state_ = dqm->ir_state; + // send event immediately. + schedule_status_event(true); break; default: { @@ -1708,35 +1724,58 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { if (false == getControllerId(dqm->rcu_data.ieee_address, &controller_id)) { XLOGD_ERROR("Controller <%s> NOT found in the network!!", ctrlm_convert_mac_long_to_string(dqm->rcu_data.ieee_address).c_str()); - report_status = false; - print_status = false; } else { auto controller = controllers_[controller_id]; switch (dqm->property_updated) { case CTRLM_HAL_BLE_PROPERTY_DEVICE_ID: controller->set_device_minor_id(dqm->rcu_data.device_minor_id); + XLOGD_INFO("Controller <%s> device minor ID changed to <%d>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.device_minor_id); + //report this immediately since listeners use this to find the input device path for the remote + schedule_status_event(true); break; case CTRLM_HAL_BLE_PROPERTY_NAME: controller->setName(string(dqm->rcu_data.name), true); + XLOGD_INFO("Controller <%s> name changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.name); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_MANUFACTURER: controller->setManufacturer(string(dqm->rcu_data.manufacturer), true); + XLOGD_INFO("Controller <%s> manufacturer changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.manufacturer); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_MODEL: controller->setModel(string(dqm->rcu_data.model), true); + XLOGD_INFO("Controller <%s> model changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.model); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_SERIAL_NUMBER: controller->setSerialNumber(string(dqm->rcu_data.serial_number), true); + XLOGD_INFO("Controller <%s> serial number changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.serial_number); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_HW_REVISION: controller->setHwRevision(string(dqm->rcu_data.hw_revision), true); + XLOGD_INFO("Controller <%s> hardware revision changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.hw_revision); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_FW_REVISION: controller->setFwRevision(string(dqm->rcu_data.fw_revision), true); + XLOGD_INFO("Controller <%s> firmware revision changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.fw_revision); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_SW_REVISION: { controller->setSwRevision(string(dqm->rcu_data.sw_revision), true); + XLOGD_INFO("Controller <%s> software revision changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.sw_revision); + schedule_status_print(); + schedule_status_event(); + // SW Rev updated, make sure xconf config file is updated ctrlm_main_queue_msg_header_t *msg = (ctrlm_main_queue_msg_header_t *)g_malloc(sizeof(ctrlm_main_queue_msg_header_t)); if(msg == NULL) { @@ -1749,26 +1788,33 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { } case CTRLM_HAL_BLE_PROPERTY_IR_CODE: controller->setIrCode(dqm->rcu_data.ir_code); + XLOGD_INFO("Controller <%s> IR code changed to <%d>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.ir_code); break; case CTRLM_HAL_BLE_PROPERTY_TOUCH_MODE: controller->setTouchMode(dqm->rcu_data.touch_mode); - print_status = false; - report_status = false; + XLOGD_INFO("Controller <%s> touch mode changed to <%u>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.touch_mode); break; case CTRLM_HAL_BLE_PROPERTY_TOUCH_MODE_SETTABLE: controller->setTouchModeSettable(dqm->rcu_data.touch_mode_settable); - print_status = false; - report_status = false; + XLOGD_INFO("Controller <%s> touch mode settable changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.touch_mode_settable ? "TRUE" : "FALSE"); break; case CTRLM_HAL_BLE_PROPERTY_BATTERY_LEVEL: controller->setBatteryPercent(dqm->rcu_data.battery_level, true); - print_status = false; + XLOGD_INFO("Controller <%s> battery level changed to <%u%%>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.battery_level); + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_CONNECTED: controller->setConnected(dqm->rcu_data.connected); + XLOGD_INFO("Controller <%s> connected changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.connected ? "TRUE" : "FALSE"); + + schedule_status_print(); + // send event immediately. + schedule_status_event(true); break; case CTRLM_HAL_BLE_PROPERTY_AUDIO_STREAMING: controller->setAudioStreaming(dqm->rcu_data.audio_streaming); + XLOGD_INFO("Controller <%s> audio streaming changed to <%s>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.audio_streaming ? "TRUE" : "FALSE"); if(!dqm->rcu_data.audio_streaming) { // report end of stream stats if (ble_rcu_interface_) { @@ -1797,19 +1843,14 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { } } } - - report_status = false; - print_status = false; break; case CTRLM_HAL_BLE_PROPERTY_AUDIO_GAIN_LEVEL: controller->setAudioGainLevel(dqm->rcu_data.audio_gain_level); - report_status = false; - print_status = false; + XLOGD_INFO("Controller <%s> audio gain level changed to <%u>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.audio_gain_level); break; case CTRLM_HAL_BLE_PROPERTY_AUDIO_CODECS: controller->setAudioCodecs(dqm->rcu_data.audio_codecs); - report_status = false; - print_status = false; + XLOGD_INFO("Controller <%s> audio codecs changed to <0x%X>", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.audio_codecs); break; case CTRLM_HAL_BLE_PROPERTY_IS_UPGRADING: XLOGD_AUTOMATION_INFO("Controller <%s> firmware upgrading = %s", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.is_upgrading ? "TRUE" : "FALSE"); @@ -1819,8 +1860,6 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { // flag to TRUE based on this property. Controller upgrade progress flag should only be set to true if packets are actively being sent controller->setUpgradeInProgress(false); } - report_status = false; - print_status = false; break; case CTRLM_HAL_BLE_PROPERTY_UPGRADE_PROGRESS: XLOGD_AUTOMATION_INFO("Controller <%s> firmware upgrade %d%% complete...", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.upgrade_progress); @@ -1830,21 +1869,17 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { controller->set_upgrade_progress(dqm->rcu_data.upgrade_progress); if (controller->is_upgrade_progress_at_increment()) { - iarm_event_rcu_firmware_status(*controller); + iarm_event_rcu_firmware_status(*controller); } - report_status = false; - print_status = false; break; case CTRLM_HAL_BLE_PROPERTY_UPGRADE_ERROR: XLOGD_AUTOMATION_ERROR("Controller <%s> firmware upgrade FAILED with error <%s>.", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.upgrade_error); - report_status = false; - print_status = false; controller->set_upgrade_error(dqm->rcu_data.upgrade_error); if (controller->retry_ota()) { controller->setUpgradeAttempted(false); XLOGD_WARN("Upgrade failed, setting timer for %d minutes to retry.", CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT / MINUTE_IN_MILLISECONDS); ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_controllers_timer_tag); - g_ctrlm_ble_network.upgrade_controllers_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT, ctrlm_ble_upgrade_controllers, &id_); + g_ctrlm_ble_network.upgrade_controllers_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_CONTINUE_TIMEOUT, ctrlm_ble_upgrade_controllers_timer_cb, &id_); controller->set_upgrade_state(CTRLM_RCU_UPGRADE_STATE_RETRYING); } else { controller->check_upgrade_error(); @@ -1871,8 +1906,6 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { case CTRLM_HAL_BLE_PROPERTY_UNPAIR_REASON: XLOGD_AUTOMATION_INFO("Controller <%s> notified reason for unpairing = <%s>", controller->ieee_address_get().to_string().c_str(), ctrlm_ble_unpair_reason_str(dqm->rcu_data.unpair_reason)); last_rcu_unpair_metrics_.write_rcu_unpair_event(controller->ieee_address_get().get_value(), string(ctrlm_ble_unpair_reason_str(dqm->rcu_data.unpair_reason))); - report_status = false; - print_status = false; if (this->unpair_on_remote_request_ && (dqm->rcu_data.unpair_reason == CTRLM_BLE_RCU_UNPAIR_REASON_SFM || dqm->rcu_data.unpair_reason == CTRLM_BLE_RCU_UNPAIR_REASON_FACTORY_RESET || @@ -1891,8 +1924,6 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { dqm->rcu_data.reboot_reason == CTRLM_BLE_RCU_REBOOT_REASON_ASSERT ? dqm->rcu_data.assert_report : "" , dqm->rcu_data.reboot_reason == CTRLM_BLE_RCU_REBOOT_REASON_ASSERT ? "\"" : ""); - report_status = false; - print_status = false; if (dqm->rcu_data.reboot_reason == CTRLM_BLE_RCU_REBOOT_REASON_FW_UPDATE) { controller->ota_clear_all_failure_counters(); @@ -1910,48 +1941,114 @@ void ctrlm_obj_network_ble_t::ind_process_rcu_status(void *data, int size) { XLOGD_INFO("Controller <%s> notified last wakeup key = %u (%s key)", controller->ieee_address_get().to_string().c_str(), dqm->rcu_data.last_wakeup_key, ctrlm_linux_key_code_str(dqm->rcu_data.last_wakeup_key, false)); controller->setLastWakeupKey(dqm->rcu_data.last_wakeup_key); - print_status = false; + + // send event immediately. + schedule_status_event(true); break; case CTRLM_HAL_BLE_PROPERTY_WAKEUP_CONFIG: controller->setWakeupConfig(dqm->rcu_data.wakeup_config); XLOGD_INFO("Controller <%s> notified wakeup config = <%s>", controller->ieee_address_get().to_string().c_str(), ctrlm_rcu_wakeup_config_str(controller->get_wakeup_config())); - if (controller->get_wakeup_config() == CTRLM_RCU_WAKEUP_CONFIG_CUSTOM) { - // Don't report status yet if its a custom config. Do that after we receive the custom list - report_status = false; - print_status = false; - } + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_WAKEUP_CUSTOM_LIST: controller->setWakeupCustomList(dqm->rcu_data.wakeup_custom_list, dqm->rcu_data.wakeup_custom_list_size); XLOGD_INFO("Controller <%s> notified wakeup custom list = <%s>", controller->ieee_address_get().to_string().c_str(), controller->wakeupCustomListToString().c_str()); - if (controller->get_wakeup_config() != CTRLM_RCU_WAKEUP_CONFIG_CUSTOM) { - // Only report status if the config is set to custom - report_status = false; - print_status = false; - } + schedule_status_print(); + schedule_status_event(); break; case CTRLM_HAL_BLE_PROPERTY_IRDBS_SUPPORTED: controller->setSupportedIrdbs(dqm->rcu_data.irdbs_supported); - report_status = false; - print_status = false; + schedule_status_print(); break; default: XLOGD_WARN("Unhandled Property: %d !!!!!!!!!!!!!!!!!!!!!!!!", dqm->property_updated); - report_status = false; - print_status = false; break; } } break; } } +} + +void ctrlm_obj_network_ble_t::schedule_status_print(bool immediately) { + XLOGD_DEBUG("immediately = <%s>, print_status_defer_count_ = <%d>", immediately ? "TRUE" : "FALSE", print_status_defer_count_); + THREAD_ID_VALIDATE(); + ctrlm_timeout_destroy(&g_ctrlm_ble_network.print_status_timer_tag); + if (immediately || print_status_defer_count_ > CTRLM_BLE_PRINT_STATUS_DEFER_MAX) { + print_status_defer_count_ = 0; + ctrlm_main_queue_msg_header_t msg; + errno_t safec_rc = memset_s(&msg, sizeof(msg), 0, sizeof(msg)); + ERR_CHK(safec_rc); + ctrlm_main_queue_handler_push(CTRLM_HANDLER_NETWORK, (ctrlm_msg_handler_network_t)&ctrlm_obj_network_t::req_process_print_status, &msg, sizeof(msg), NULL, id_); + } else { + print_status_defer_count_++; + g_ctrlm_ble_network.print_status_timer_tag = ctrlm_timeout_create(CTRLM_BLE_PRINT_STATUS_TIMEOUT, ctrlm_ble_print_status_timer_cb, &id_); + } +} + +void ctrlm_obj_network_ble_t::schedule_status_event(bool immediately) { + XLOGD_DEBUG("immediately = <%s>, event_status_defer_count_ = <%d>", immediately ? "TRUE" : "FALSE", event_status_defer_count_); + THREAD_ID_VALIDATE(); + ctrlm_timeout_destroy(&g_ctrlm_ble_network.event_status_timer_tag); + if (immediately || event_status_defer_count_ > CTRLM_BLE_EVENT_STATUS_DEFER_MAX) { + event_status_defer_count_ = 0; + ctrlm_main_queue_msg_header_t msg; + errno_t safec_rc = memset_s(&msg, sizeof(msg), 0, sizeof(msg)); + ERR_CHK(safec_rc); + ctrlm_main_queue_handler_push(CTRLM_HANDLER_NETWORK, (ctrlm_msg_handler_network_t)&ctrlm_obj_network_t::req_process_event_status, &msg, sizeof(msg), NULL, id_); + } else { + event_status_defer_count_++; + g_ctrlm_ble_network.event_status_timer_tag = ctrlm_timeout_create(CTRLM_BLE_EVENT_STATUS_TIMEOUT, ctrlm_ble_event_status_timer_cb, &id_); + } +} + + +void ctrlm_obj_network_ble_t::req_process_print_status(void *data, int size) { + XLOGD_DEBUG("Enter..."); + THREAD_ID_VALIDATE(); + + print_status_defer_count_ = 0; + printStatus(); +} - if (true == print_status) { - printStatus(); +void ctrlm_obj_network_ble_t::req_process_event_status(void *data, int size) { + XLOGD_DEBUG("Enter..."); + THREAD_ID_VALIDATE(); + + event_status_defer_count_ = 0; + iarm_event_rcu_status(); +} + + +static gboolean ctrlm_ble_print_status_timer_cb(gpointer user_data) { + XLOGD_DEBUG("Enter..."); + ctrlm_network_id_t* net_id = (ctrlm_network_id_t*) user_data; + if (net_id != NULL) { + // Allocate a message and send it to Control Manager's queue + ctrlm_main_queue_msg_header_t msg; + errno_t safec_rc = memset_s(&msg, sizeof(msg), 0, sizeof(msg)); + ERR_CHK(safec_rc); + + ctrlm_main_queue_handler_push(CTRLM_HANDLER_NETWORK, (ctrlm_msg_handler_network_t)&ctrlm_obj_network_t::req_process_print_status, &msg, sizeof(msg), NULL, *net_id); } - if (true == report_status) { - iarm_event_rcu_status(); + g_ctrlm_ble_network.print_status_timer_tag = 0; + return false; +} + +static gboolean ctrlm_ble_event_status_timer_cb(gpointer user_data) { + XLOGD_DEBUG("Enter..."); + ctrlm_network_id_t* net_id = (ctrlm_network_id_t*) user_data; + if (net_id != NULL) { + // Allocate a message and send it to Control Manager's queue + ctrlm_main_queue_msg_header_t msg; + errno_t safec_rc = memset_s(&msg, sizeof(msg), 0, sizeof(msg)); + ERR_CHK(safec_rc); + + ctrlm_main_queue_handler_push(CTRLM_HANDLER_NETWORK, (ctrlm_msg_handler_network_t)&ctrlm_obj_network_t::req_process_event_status, &msg, sizeof(msg), NULL, *net_id); } + g_ctrlm_ble_network.event_status_timer_tag = 0; + return false; } void ctrlm_obj_network_ble_t::populate_rcu_status_message(ctrlm_iarm_RcuStatus_params_t *msg) { @@ -2033,6 +2130,10 @@ ctrlm_controller_id_t ctrlm_obj_network_ble_t::controller_add(ctrlm_hal_ble_rcu_ controller->db_store(); } + + schedule_status_print(); + schedule_status_event(); + return id; } @@ -2060,13 +2161,9 @@ void ctrlm_obj_network_ble_t::ind_process_paired(void *data, int size) { return; } - ctrlm_controller_id_t id = controller_add(dqm->rcu_data); - if (controller_exists(id)) { - controllers_[id]->print_status(); - } + controller_add(dqm->rcu_data); // Sync currently connected devices with the HAL - if (ble_rcu_interface_) { auto devices = ble_rcu_interface_->getManagedDevices(); @@ -2130,9 +2227,9 @@ void ctrlm_obj_network_ble_t::ind_process_unpaired(void *data, int size) { controller_remove(id); controllers_.erase(id); - // report updated controller status to the plugin - printStatus(); - iarm_event_rcu_status(); + + schedule_status_print(); + schedule_status_event(); // Update xconf config file ctrlm_main_queue_msg_header_t *msg = (ctrlm_main_queue_msg_header_t *)g_malloc(sizeof(ctrlm_main_queue_msg_header_t)); @@ -2227,7 +2324,7 @@ void ctrlm_obj_network_ble_t::ind_process_keypress(void *data, int size) { XLOGD_INFO("Upgrade cancelled since remote is being used. Setting timer to resume upgrade in %d minutes.", CTRLM_BLE_UPGRADE_PAUSE_TIMEOUT / MINUTE_IN_MILLISECONDS); //delete existing timer and start again ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_pause_timer_tag); - g_ctrlm_ble_network.upgrade_pause_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_PAUSE_TIMEOUT, ctrlm_ble_upgrade_resume, &id_); + g_ctrlm_ble_network.upgrade_pause_timer_tag = ctrlm_timeout_create(CTRLM_BLE_UPGRADE_PAUSE_TIMEOUT, ctrlm_ble_upgrade_resume_timer_cb, &id_); } else if (controller->getUpgradeStuck() && !upgrade_in_progress_) { @@ -2235,7 +2332,7 @@ void ctrlm_obj_network_ble_t::ind_process_keypress(void *data, int size) { controller->ieee_address_get().to_string().c_str()); //delete existing timer and immediately kick off another upgrade ctrlm_timeout_destroy(&g_ctrlm_ble_network.upgrade_pause_timer_tag); - g_ctrlm_ble_network.upgrade_pause_timer_tag = ctrlm_timeout_create(500, ctrlm_ble_upgrade_resume, &id_); + g_ctrlm_ble_network.upgrade_pause_timer_tag = ctrlm_timeout_create(500, ctrlm_ble_upgrade_resume_timer_cb, &id_); } } else if (key_status == CTRLM_KEY_STATUS_UP) { @@ -2380,8 +2477,7 @@ bool ctrlm_obj_network_ble_t::getControllerId(unsigned long long ieee_address, c } } if ( !found ) { - XLOGD_WARN("Controller matching ieee_address (%s) NOT FOUND.", - ctrlm_convert_mac_long_to_string(ieee_address).c_str()); + XLOGD_DEBUG("Controller matching ieee_address (%s) NOT FOUND.", ctrlm_convert_mac_long_to_string(ieee_address).c_str()); } return found; } @@ -2430,7 +2526,7 @@ ctrlm_controller_id_t ctrlm_obj_network_ble_t::controller_id_assign() { // Get the next available controller id for(ctrlm_controller_id_t index = BLE_RCU_ID_RANGE_MIN; index < BLE_RCU_ID_RANGE_MAX; index++) { if(!controller_exists(index)) { - XLOGD_INFO("controller id %u", index); + XLOGD_DEBUG("controller id %u", index); return(index); } } diff --git a/src/ble/ctrlm_ble_network.h b/src/ble/ctrlm_ble_network.h index 1182889a..90724d94 100644 --- a/src/ble/ctrlm_ble_network.h +++ b/src/ble/ctrlm_ble_network.h @@ -168,6 +168,11 @@ class ctrlm_obj_network_ble_t : public ctrlm_obj_network_t { virtual void req_process_cancel_controller_upgrade(void *data, int size); virtual void req_process_status_controller_upgrade(void *data, int size); + void schedule_status_print(bool immediately = false); + void schedule_status_event(bool immediately = false); + virtual void req_process_print_status(void *data, int size); + virtual void req_process_event_status(void *data, int size); + virtual json_t * xconf_export_controllers(); void addUpgradeImage(const ctrlm_ble_upgrade_image_info_t &image_info); void clearUpgradeImages(); @@ -215,6 +220,8 @@ class ctrlm_obj_network_ble_t : public ctrlm_obj_network_t { bool upgrade_in_progress_ = false; bool unpair_on_remote_request_ = true; ctrlm_ble_unpair_metrics_t last_rcu_unpair_metrics_; + int print_status_defer_count_ = 0; + int event_status_defer_count_ = 0; std::map controllers_; std::map upgrade_images_; diff --git a/src/ble/ctrlm_ble_rcu_interface.cpp b/src/ble/ctrlm_ble_rcu_interface.cpp index f90cdc67..4f3e1635 100644 --- a/src/ble/ctrlm_ble_rcu_interface.cpp +++ b/src/ble/ctrlm_ble_rcu_interface.cpp @@ -1397,7 +1397,7 @@ std::vector ctrlm_ble_rcu_interface_t::getManagedDevices() return ret; } - XLOGD_INFO("Get list of currently managed devices"); + XLOGD_DEBUG("Get list of currently managed devices"); auto devices = m_controller->managedDevices(); for (auto const &device : devices) { @@ -1482,8 +1482,8 @@ static int OpenKeyInputDevice(uint64_t ieee_address) uint64_t evdev_macaddr = ctrlm_convert_mac_string_to_long(libevdev_get_uniq(evdev)); if (evdev_macaddr == ieee_address) { - XLOGD_INFO("Input Dev Node (%s) for device (0x%llX) FOUND, returning file descriptor: <%d>", - keyInputFilename.c_str(), ieee_address, input_fd); + XLOGD_INFO("Input Dev Node (%s) for device: <%s> (0x%llX) FOUND, returning file descriptor: <%d>", + keyInputFilename.c_str(), libevdev_get_name(evdev), ieee_address, input_fd); libevdev_free(evdev); evdev = NULL; diff --git a/src/ble/hal/blercu/bleservices/gatt/gatt_audioservice_rdk.cpp b/src/ble/hal/blercu/bleservices/gatt/gatt_audioservice_rdk.cpp index 265a5d83..80897f10 100644 --- a/src/ble/hal/blercu/bleservices/gatt/gatt_audioservice_rdk.cpp +++ b/src/ble/hal/blercu/bleservices/gatt/gatt_audioservice_rdk.cpp @@ -468,7 +468,7 @@ void GattAudioServiceRdk::requestGainLevel() if (value.size() == 1) { m_gainLevel = value[0]; - XLOGD_INFO("Successfully read from RCU gain level = %u", m_gainLevel); + XLOGD_DEBUG("Successfully read from RCU gain level = %u", m_gainLevel); m_gainLevelChangedSlots.invoke(m_gainLevel); } else { XLOGD_ERROR("gain value received has invalid length (%d bytes)", value.size()); @@ -502,7 +502,7 @@ void GattAudioServiceRdk::requestAudioCodecs() if (value.size() == sizeof(m_audioCodecs)) { memcpy(&m_audioCodecs, value.data(), sizeof(m_audioCodecs)); - XLOGD_INFO("Successfully read from RCU audio codecs bit mask = 0x%X", m_audioCodecs); + XLOGD_DEBUG("Successfully read from RCU audio codecs bit mask = 0x%X", m_audioCodecs); m_audioCodecsChangedSlots.invoke(m_audioCodecs); } else { XLOGD_ERROR("audio codec received has invalid length (%d bytes)", value.size()); diff --git a/src/ble/hal/blercu/bleservices/gatt/gatt_batteryservice.cpp b/src/ble/hal/blercu/bleservices/gatt/gatt_batteryservice.cpp index 0dd84fcf..951674e7 100644 --- a/src/ble/hal/blercu/bleservices/gatt/gatt_batteryservice.cpp +++ b/src/ble/hal/blercu/bleservices/gatt/gatt_batteryservice.cpp @@ -275,7 +275,7 @@ void GattBatteryService::onBatteryLevelChanged(const std::vector &newVa return; } - XLOGD_INFO("battery level changed to %u%%", newValue[0]); + XLOGD_DEBUG("battery level changed to %u%%", newValue[0]); // clamp the reply between 0 and 100 unsigned int level = sanitiseBatteryLevel(newValue[0]); diff --git a/src/ble/hal/blercu/bleservices/gatt/gatt_deviceinfoservice.cpp b/src/ble/hal/blercu/bleservices/gatt/gatt_deviceinfoservice.cpp index f4955dfa..441dda76 100644 --- a/src/ble/hal/blercu/bleservices/gatt/gatt_deviceinfoservice.cpp +++ b/src/ble/hal/blercu/bleservices/gatt/gatt_deviceinfoservice.cpp @@ -239,11 +239,9 @@ void GattDeviceInfoService::onEnteredState(int state) */ void GattDeviceInfoService::onExitedState(int state) { - // on exiting the initialising state we should have all the required - // device info fields, so at this point log a milestone message with all - // the details + // on exiting the initialising state we should have all the required device info fields if (state == InitialisingState) { - XLOGD_INFO("bluetooth rcu device info [ %s / %s / hw:%s / fw:%s / sw:%s ]", + XLOGD_DEBUG("bluetooth rcu device info [ %s / %s / hw:%s / fw:%s / sw:%s ]", m_manufacturerName.c_str(), m_modelNumber.c_str(), m_hardwareRevision.c_str(), m_firmwareVersion.c_str(), m_softwareVersion.c_str()); @@ -380,7 +378,7 @@ void GattDeviceInfoService::setManufacturerName(const std::vector &valu if (name != m_manufacturerName) { m_manufacturerName = name; - XLOGD_INFO("manufacturer name: %s", m_manufacturerName.c_str()); + XLOGD_DEBUG("manufacturer name: %s", m_manufacturerName.c_str()); m_manufacturerNameChangedSlots.invoke(m_manufacturerName); } @@ -401,7 +399,7 @@ void GattDeviceInfoService::setModelNumber(const std::vector &value) if (model != m_modelNumber) { m_modelNumber = model; - XLOGD_INFO("model number: %s", m_modelNumber.c_str()); + XLOGD_DEBUG("model number: %s", m_modelNumber.c_str()); m_modelNumberChangedSlots.invoke(m_modelNumber); } @@ -422,7 +420,7 @@ void GattDeviceInfoService::setSerialNumber(const std::vector &value) if (serial != m_serialNumber) { m_serialNumber = serial; - XLOGD_INFO("serial number: %s", m_serialNumber.c_str()); + XLOGD_DEBUG("serial number: %s", m_serialNumber.c_str()); m_serialNumberChangedSlots.invoke(m_serialNumber); } @@ -443,7 +441,7 @@ void GattDeviceInfoService::setHardwareRevision(const std::vector &valu if (hwVersion != m_hardwareRevision) { m_hardwareRevision = hwVersion; - XLOGD_INFO("hardware revision: %s", m_hardwareRevision.c_str()); + XLOGD_DEBUG("hardware revision: %s", m_hardwareRevision.c_str()); m_hardwareRevisionChangedSlots.invoke(m_hardwareRevision); } @@ -465,7 +463,7 @@ void GattDeviceInfoService::setFirmwareVersion(const std::vector &value if (fwVersion != m_firmwareVersion) { m_firmwareVersion = fwVersion; - XLOGD_INFO("firmware version: %s", m_firmwareVersion.c_str()); + XLOGD_DEBUG("firmware version: %s", m_firmwareVersion.c_str()); m_firmwareVersionChangedSlots.invoke(m_firmwareVersion); } @@ -487,7 +485,7 @@ void GattDeviceInfoService::setSoftwareVersion(const std::vector &value if (swVersion != m_softwareVersion) { m_softwareVersion = swVersion; - XLOGD_INFO("software version: %s", m_softwareVersion.c_str()); + XLOGD_DEBUG("software version: %s", m_softwareVersion.c_str()); m_softwareVersionChangedSlots.invoke(m_softwareVersion); } @@ -518,7 +516,7 @@ void GattDeviceInfoService::setSystemId(const std::vector &value) (((uint64_t)value[6]) << 8) | (((uint64_t)value[7]) << 0); - XLOGD_INFO("system id: 0x%016llx", m_systemId); + XLOGD_DEBUG("system id: 0x%016llx", m_systemId); } // ----------------------------------------------------------------------------- diff --git a/src/ble/hal/blercu/bleservices/gatt/gatt_infraredservice.cpp b/src/ble/hal/blercu/bleservices/gatt/gatt_infraredservice.cpp index 40dff3c6..d7be62e4 100644 --- a/src/ble/hal/blercu/bleservices/gatt/gatt_infraredservice.cpp +++ b/src/ble/hal/blercu/bleservices/gatt/gatt_infraredservice.cpp @@ -449,7 +449,7 @@ void GattInfraredService::requestIrSupport() if (value.size() == 1) { uint8_t irSupport_ = value[0]; - XLOGD_INFO("IR support value = 0x%x", irSupport_); + XLOGD_DEBUG("IR support value = 0x%x", irSupport_); if (irSupport_ != m_irSupport) { m_irSupport = irSupport_; m_irSupportChangedSlots.invoke(m_irSupport); @@ -500,7 +500,7 @@ void GattInfraredService::requestCodeId() (int32_t(value[2]) << 16) | (int32_t(value[3]) << 24); - XLOGD_INFO("IR code ID = %d", codeId_); + XLOGD_DEBUG("IR code ID = %d", codeId_); if (codeId_ != m_codeId) { m_codeId = codeId_; diff --git a/src/ble/hal/blercu/bleservices/gatt/gatt_infraredsignal.cpp b/src/ble/hal/blercu/bleservices/gatt/gatt_infraredsignal.cpp index b5ecc8fb..351e5cb9 100644 --- a/src/ble/hal/blercu/bleservices/gatt/gatt_infraredsignal.cpp +++ b/src/ble/hal/blercu/bleservices/gatt/gatt_infraredsignal.cpp @@ -365,27 +365,27 @@ void GattInfraredSignal::onEnteredInitialisingState() switch (value[0]) { case 0x0C: m_keyCode = Key_PowerPrimary; - XLOGD_INFO("found characteristic for 0x%02hhx (Key_PowerPrimary)", value[0]); + XLOGD_DEBUG("found characteristic for 0x%02hhx (Key_PowerPrimary)", value[0]); break; case 0x0B: m_keyCode = Key_PowerSecondary; - XLOGD_INFO("found characteristic for 0x%02hhx (Key_PowerSecondary)", value[0]); + XLOGD_DEBUG("found characteristic for 0x%02hhx (Key_PowerSecondary)", value[0]); break; case 0x29: m_keyCode = Key_Input; - XLOGD_INFO("found characteristic for 0x%02hhx (Key_Input)", value[0]); + XLOGD_DEBUG("found characteristic for 0x%02hhx (Key_Input)", value[0]); break; case 0x10: m_keyCode = Key_VolUp; - XLOGD_INFO("found characteristic for 0x%02hhx (Key_VolUp)", value[0]); + XLOGD_DEBUG("found characteristic for 0x%02hhx (Key_VolUp)", value[0]); break; case 0x11: m_keyCode = Key_VolDown; - XLOGD_INFO("found characteristic for 0x%02hhx (Key_VolDown)", value[0]); + XLOGD_DEBUG("found characteristic for 0x%02hhx (Key_VolDown)", value[0]); break; case 0x0D: m_keyCode = Key_Mute; - XLOGD_INFO("found characteristic for 0x%02hhx (Key_Mute)", value[0]); + XLOGD_DEBUG("found characteristic for 0x%02hhx (Key_Mute)", value[0]); break; /* diff --git a/src/ble/hal/blercu/bleservices/gatt/gatt_remotecontrolservice.cpp b/src/ble/hal/blercu/bleservices/gatt/gatt_remotecontrolservice.cpp index a6c89198..2ec23b0a 100644 --- a/src/ble/hal/blercu/bleservices/gatt/gatt_remotecontrolservice.cpp +++ b/src/ble/hal/blercu/bleservices/gatt/gatt_remotecontrolservice.cpp @@ -279,7 +279,7 @@ void GattRemoteControlService::requestStartUnpairNotify() m_stateMachine.cancelDelayedEvents(RetryStartNotifyEvent); m_stateMachine.postDelayedEvent(RetryStartNotifyEvent, 2000); } else { - XLOGD_INFO("request to start notifications on Unpair characteristic succeeded"); + XLOGD_DEBUG("request to start notifications on Unpair characteristic succeeded"); } }; @@ -303,7 +303,7 @@ void GattRemoteControlService::requestStartRebootNotify() m_stateMachine.cancelDelayedEvents(RetryStartNotifyEvent); m_stateMachine.postDelayedEvent(RetryStartNotifyEvent, 2000); } else { - XLOGD_INFO("request to start notifications on Reboot Reason characteristic succeeded"); + XLOGD_DEBUG("request to start notifications on Reboot Reason characteristic succeeded"); } }; @@ -332,7 +332,7 @@ void GattRemoteControlService::requestRawBatteryVoltageChangedNotify() m_stateMachine.cancelDelayedEvents(RetryStartNotifyEvent); m_stateMachine.postDelayedEvent(RetryStartNotifyEvent, 2000); } else { - XLOGD_INFO("request to start notifications on Raw Battery Voltage characteristic succeeded"); + XLOGD_DEBUG("request to start notifications on Raw Battery Voltage characteristic succeeded"); } }; @@ -433,7 +433,7 @@ void GattRemoteControlService::requestUnpairReason() if (value.size() == 1) { m_unpairReason = value[0]; - XLOGD_INFO("Initial unpair reason is %u (%s)", m_unpairReason, + XLOGD_DEBUG("Initial unpair reason is %u (%s)", m_unpairReason, ctrlm_ble_unpair_reason_str((ctrlm_ble_RcuUnpairReason_t)m_unpairReason)); } else { XLOGD_ERROR("Unpair reason received has invalid length (%d bytes)", value.size()); @@ -468,7 +468,7 @@ void GattRemoteControlService::requestRebootReason() if (value.size() == 1) { m_rebootReason = value[0]; - XLOGD_INFO("Initial reboot reason is %u (%s)", m_rebootReason, + XLOGD_DEBUG("Initial reboot reason is %u (%s)", m_rebootReason, ctrlm_ble_reboot_reason_str((ctrlm_ble_RcuRebootReason_t)m_rebootReason)); if (m_rebootReason == CTRLM_BLE_RCU_REBOOT_REASON_ASSERT) { @@ -509,7 +509,7 @@ void GattRemoteControlService::requestAssertReport() if (value.size() == CTRLM_RCU_ASSERT_REPORT_MAX_SIZE) { string assertStr(value.begin(), value.end()); - XLOGD_INFO("Initial RCU assert report is <%s>", assertStr.c_str()); + XLOGD_DEBUG("Initial RCU assert report is <%s>", assertStr.c_str()); } else { XLOGD_ERROR("RCU assert report has invalid length (%d bytes)", value.size()); } @@ -545,7 +545,7 @@ void GattRemoteControlService::requestLastKeypress() if (value.size() == 1) { m_lastKeypress = value[0]; - XLOGD_INFO("Successfully read last key press characteristic, value = <0x%X>, emitting signal...", m_lastKeypress); + XLOGD_DEBUG("Successfully read last key press characteristic, value = <0x%X>, emitting signal...", m_lastKeypress); m_lastKeypressChangedSlots.invoke(m_lastKeypress); } else { XLOGD_ERROR("Last key press received has invalid length (%d bytes)", value.size()); @@ -625,7 +625,7 @@ void GattRemoteControlService::requestAdvConfig() if (value.size() == 1) { m_advConfig = value[0]; - XLOGD_INFO("Successfully read advertising config characteristic, value = <0x%X>, emitting signal...", m_advConfig); + XLOGD_DEBUG("Successfully read advertising config characteristic, value = <0x%X>, emitting signal...", m_advConfig); m_advConfigChangedSlots.invoke(m_advConfig); } else { XLOGD_ERROR("Advertising config received has invalid length (%d bytes)", value.size()); @@ -662,7 +662,7 @@ void GattRemoteControlService::requestAdvConfigCustomList() XLOGD_ERROR("Failed to read custom advertising config due to <%s>", reply->errorMessage().c_str()); } else { m_advConfigCustomList = reply->result(); - XLOGD_INFO("Successfully read advertising config custom list characteristic"); + XLOGD_DEBUG("Successfully read advertising config custom list characteristic"); m_advConfigCustomListChangedSlots.invoke(m_advConfigCustomList); } @@ -882,7 +882,7 @@ void GattRemoteControlService::onRebootReasonChanged(const vector &newV XLOGD_ERROR("Reboot reason received has invalid length (%d bytes)", newValue.size()); } else { m_rebootReason = newValue[0]; - XLOGD_INFO("reboot reason changed to %u (%s)", m_rebootReason, + XLOGD_DEBUG("reboot reason changed to %u (%s)", m_rebootReason, ctrlm_ble_reboot_reason_str((ctrlm_ble_RcuRebootReason_t)m_rebootReason)); if (m_rebootReason == CTRLM_BLE_RCU_REBOOT_REASON_ASSERT && m_assertReportCharacteristic) { diff --git a/src/ble/hal/blercu/bluez/blegattnotifypipe.cpp b/src/ble/hal/blercu/bluez/blegattnotifypipe.cpp index 6f54af37..1c9c0afc 100644 --- a/src/ble/hal/blercu/bluez/blegattnotifypipe.cpp +++ b/src/ble/hal/blercu/bluez/blegattnotifypipe.cpp @@ -183,7 +183,7 @@ BleGattNotifyPipe::BleGattNotifyPipe(int notifyPipeFd, uint16_t mtu, BleUuid uui m_notifyThread.name = "ble_notify"; sem_init(&m_notifyThreadSem, 0, 0); - XLOGD_INFO("Launching thread <%s> for %s...", m_notifyThread.name, m_uuid.toString().c_str()); + XLOGD_DEBUG("Launching thread <%s> for %s...", m_notifyThread.name, m_uuid.toString().c_str()); if (false == ThreadCreate(&m_notifyThread, NotifyThread, this)) { sem_destroy(&m_notifyThreadSem); } else { diff --git a/src/ctrlm_controller.cpp b/src/ctrlm_controller.cpp index 60173d47..0e7b175e 100644 --- a/src/ctrlm_controller.cpp +++ b/src/ctrlm_controller.cpp @@ -43,15 +43,15 @@ ctrlm_obj_controller_t::ctrlm_obj_controller_t(ctrlm_controller_id_t controller_ voice_metrics_(std::make_shared(&network, controller_id)), ota_failure_cnt_from_last_success_(std::make_shared("OTA Failure Count From Last Success", 0, &network, controller_id, "ota_failure_cnt_last_success")) { - XLOGD_INFO("constructor - %u", controller_id_); + XLOGD_DEBUG("constructor - %u", controller_id_); } ctrlm_obj_controller_t::ctrlm_obj_controller_t() { - XLOGD_INFO("constructor - default"); + XLOGD_DEBUG("constructor - default"); } ctrlm_obj_controller_t::~ctrlm_obj_controller_t() { - XLOGD_INFO("deconstructor - %u", controller_id_); + XLOGD_DEBUG("destructor - %u", controller_id_); } void ctrlm_obj_controller_t::db_load() { diff --git a/src/ctrlm_ir_controller.cpp b/src/ctrlm_ir_controller.cpp index c42b8eae..d2b16855 100644 --- a/src/ctrlm_ir_controller.cpp +++ b/src/ctrlm_ir_controller.cpp @@ -143,7 +143,7 @@ bool ctrlm_ir_controller_t::read_config() { string substr; getline( ss, substr, ',' ); if (!substr.empty()) { - XLOGD_INFO("Adding IR input device name: <%s>", substr.c_str()); + XLOGD_DEBUG("Adding IR input device name: <%s>", substr.c_str()); input_device_names_.push_back(substr); } } diff --git a/src/ctrlm_network.cpp b/src/ctrlm_network.cpp index 26201231..8715c038 100644 --- a/src/ctrlm_network.cpp +++ b/src/ctrlm_network.cpp @@ -66,7 +66,7 @@ ctrlm_obj_network_t::ctrlm_obj_network_t() { } ctrlm_obj_network_t::~ctrlm_obj_network_t() { - XLOGD_INFO("deconstructor - Type (%u) Id (%u) Name (%s)", type_, id_, name_.c_str()); + XLOGD_INFO("destructor - Type (%u) Id (%u) Name (%s)", type_, id_, name_.c_str()); if(NULL != hal_api_term_) { ctrlm_network_term_hal_t *term_data; @@ -882,6 +882,14 @@ void ctrlm_obj_network_t::req_process_upgrade_controllers(void *data, int size) XLOGD_WARN("not implemented for %s network", name_get()); } +void ctrlm_obj_network_t::req_process_print_status(void *data, int size) { + XLOGD_WARN("not implemented for %s network", name_get()); +} + +void ctrlm_obj_network_t::req_process_event_status(void *data, int size) { + XLOGD_WARN("not implemented for %s network", name_get()); +} + void ctrlm_obj_network_t::req_process_start_controller_upgrade(void *data, int size) { ctrlm_main_queue_msg_start_controller_upgrade_t *dqm = (ctrlm_main_queue_msg_start_controller_upgrade_t *)data; diff --git a/src/ctrlm_network.h b/src/ctrlm_network.h index ca6ad547..592e6e84 100644 --- a/src/ctrlm_network.h +++ b/src/ctrlm_network.h @@ -288,6 +288,9 @@ class ctrlm_obj_network_t virtual void power_state_change(gboolean waking_up); time_t stale_remote_time_threshold_get(); + virtual void req_process_print_status(void *data, int size); + virtual void req_process_event_status(void *data, int size); + virtual void iarm_event_rcu_status(void); virtual void iarm_event_rcu_validation_status(void); virtual void iarm_event_rcu_firmware_status(const ctrlm_obj_controller_t &rcu); diff --git a/src/database/ctrlm_database.cpp b/src/database/ctrlm_database.cpp index dfe2bb21..e28e4432 100644 --- a/src/database/ctrlm_database.cpp +++ b/src/database/ctrlm_database.cpp @@ -2183,7 +2183,7 @@ void ctrlm_db_controller_create(ctrlm_network_id_t network_id, ctrlm_controller_ char table_name_controller_entry[CONTROLLER_TABLE_NAME_MAX_LEN]; char key[3]; - XLOGD_INFO("network id %u controller id %u", network_id, controller_id); + XLOGD_DEBUG("network id %u controller id %u", network_id, controller_id); switch(ctrlm_network_type_get(network_id)) { case CTRLM_NETWORK_TYPE_IP: diff --git a/src/database/ctrlm_db_types.cpp b/src/database/ctrlm_db_types.cpp index 0a464b06..362c9f3c 100644 --- a/src/database/ctrlm_db_types.cpp +++ b/src/database/ctrlm_db_types.cpp @@ -35,7 +35,7 @@ ctrlm_db_obj_t::~ctrlm_db_obj_t() { bool ctrlm_db_obj_t::read_db(ctrlm_db_ctx_t ctx) { bool ret = false; sqlite3 *handle = (sqlite3 *)ctx; - XLOGD_INFO("reading blob %s from table %s", this->key.c_str(), this->table.c_str()); + XLOGD_DEBUG("reading blob %s from table %s", this->key.c_str(), this->table.c_str()); if(handle) { sqlite3_stmt *stmt = NULL; std::string query = "SELECT value FROM " + this->table + " WHERE key='" + this->key + "';"; @@ -63,7 +63,7 @@ bool ctrlm_db_obj_t::read_db(ctrlm_db_ctx_t ctx) { bool ctrlm_db_obj_t::write_db(ctrlm_db_ctx_t ctx) { bool ret = false; sqlite3 *handle = (sqlite3 *)ctx; - XLOGD_INFO("writing blob %s to table %s", this->key.c_str(), this->table.c_str()); + XLOGD_DEBUG("writing blob %s to table %s", this->key.c_str(), this->table.c_str()); if(handle) { sqlite3_stmt *stmt = NULL; std::string query = "INSERT OR REPLACE INTO " + this->table + "(key,value) VALUES (?,?);"; diff --git a/src/network/ctrlm_ir_rf_db.h b/src/network/ctrlm_ir_rf_db.h index c9f489a2..439bf1e0 100644 --- a/src/network/ctrlm_ir_rf_db.h +++ b/src/network/ctrlm_ir_rf_db.h @@ -43,7 +43,7 @@ class ctrlm_ir_rf_db_t { ctrlm_ir_rf_db_t(bool power_toggle_favor_tv = true, bool power_discrete_favor_tv = false); /** - * Default Deconstructor + * Default destructor */ virtual ~ctrlm_ir_rf_db_t(); diff --git a/src/rf4ce/ctrlm_rf4ce_controller.cpp b/src/rf4ce/ctrlm_rf4ce_controller.cpp index 960b3fd2..c298ab9e 100644 --- a/src/rf4ce/ctrlm_rf4ce_controller.cpp +++ b/src/rf4ce/ctrlm_rf4ce_controller.cpp @@ -212,7 +212,7 @@ ctrlm_obj_controller_rf4ce_t::ctrlm_obj_controller_rf4ce_t() { } ctrlm_obj_controller_rf4ce_t::~ctrlm_obj_controller_rf4ce_t() { - XLOGD_INFO("deconstructor"); + XLOGD_INFO("destructor"); if (metrics_tag_ != 0) { XLOGD_WARN("metrics timer destroyed"); diff --git a/src/rf4ce/ctrlm_rf4ce_network.cpp b/src/rf4ce/ctrlm_rf4ce_network.cpp index 2caa75c2..85a3caea 100644 --- a/src/rf4ce/ctrlm_rf4ce_network.cpp +++ b/src/rf4ce/ctrlm_rf4ce_network.cpp @@ -304,7 +304,7 @@ ctrlm_obj_network_rf4ce_t::ctrlm_obj_network_rf4ce_t() { } ctrlm_obj_network_rf4ce_t::~ctrlm_obj_network_rf4ce_t() { - XLOGD_INFO("deconstructor"); + XLOGD_INFO("destructor"); for (auto timeout : bind_validation_failed_timeout_) { ctrlm_timeout_destroy(&timeout->timer_id); if (controller_exists(timeout->controller_id)){