Skip to content

Commit e502de1

Browse files
authored
RDKEMW-11471: Remove netType param (#164)
1 parent d66eb1d commit e502de1

19 files changed

+250
-120
lines changed

src/ble/ctrlm_ble_controller.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,4 +654,21 @@ void ctrlm_obj_controller_ble_t::print_status() {
654654
XLOGD_WARN("------------------------------------------------------------");
655655
}
656656

657+
void ctrlm_obj_controller_ble_t::update_controller_id_and_db_entry(std::string db_name, ctrlm_network_id_t network_id, ctrlm_controller_id_t new_id) {
658+
ctrlm_obj_controller_t::update_controller_id_and_db_entry(db_name, network_id, new_id);
659+
660+
std::stringstream new_controller_db_table;
661+
new_controller_db_table << db_name << "_" << COUT_HEX_MODIFIER << (int)network_id << "_controller_" << COUT_HEX_MODIFIER << (int)new_id;
662+
std::string new_table = new_controller_db_table.str();
663+
664+
product_name_->set_table(new_table);
665+
serial_number_->set_table(new_table);
666+
manufacturer_->set_table(new_table);
667+
model_->set_table(new_table);
668+
fw_revision_->set_table(new_table);
669+
sw_revision_->set_table(new_table);
670+
hw_revision_->set_table(new_table);
671+
battery_percent_->set_table(new_table);
672+
}
673+
657674
// End Function Implementations

src/ble/ctrlm_ble_controller.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@ class ctrlm_obj_controller_ble_t : public ctrlm_obj_controller_t {
147147
ctrlm_timestamp_t getVoiceStartTimeKey() const;
148148
ctrlm_timestamp_t getVoiceStartTimeLocal() const;
149149

150+
void update_controller_id_and_db_entry(std::string name, ctrlm_network_id_t network_id, ctrlm_controller_id_t new_id);
151+
150152
private:
151153
ctrlm_obj_network_ble_t *obj_network_ble_ = NULL;
152154

src/ble/ctrlm_ble_network.cpp

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -779,13 +779,15 @@ void ctrlm_obj_network_ble_t::req_process_program_ir_codes(void *data, int size)
779779
g_assert(dqm);
780780
g_assert(size == sizeof(ctrlm_main_queue_msg_program_ir_codes_t));
781781

782-
if(dqm->success) {*(dqm->success) = false;}
782+
bool success = false;
783783

784784
if (!ready_) {
785785
XLOGD_FATAL("Network is not ready!");
786786
} else {
787787
ctrlm_controller_id_t controller_id = dqm->controller_id;
788-
if (!controller_exists(controller_id)) {
788+
if (!is_managed_by_network(controller_id)) {
789+
XLOGD_ERROR("Controller %d is not managed by the %s network", controller_id, name_get());
790+
} else if (!controller_exists(controller_id)) {
789791
XLOGD_ERROR("Controller doesn't exist!");
790792
} else if (!controllers_[controller_id]->isSupportedIrdb(dqm->vendor_info)) {
791793
XLOGD_ERROR("Unsupported IRDB - not continuing with ir code download!");
@@ -815,19 +817,18 @@ void ctrlm_obj_network_ble_t::req_process_program_ir_codes(void *data, int size)
815817

816818
XLOGD_ERROR("failed to program IR signal waveforms on remote");
817819
} else {
818-
819-
if (dqm->success) { *(dqm->success) = true; }
820-
821-
controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_TV, ir_rf_database_.get_tv_ir_code_id());
822-
controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_AVR, ir_rf_database_.get_avr_ir_code_id());
823-
XLOGD_INFO("irdb_entry_id_name = <%s>", dqm->ir_codes->id.c_str());
820+
success = true;
821+
controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_TV, ir_rf_database_.get_tv_ir_code_id());
822+
controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_AVR, ir_rf_database_.get_avr_ir_code_id());
823+
XLOGD_INFO("irdb_entry_id_name = <%s>", dqm->ir_codes->id.c_str());
824824
}
825825
}
826826
// Store the IR codes in the database
827827
ir_rf_database_.store_db();
828828
}
829829
}
830830
}
831+
if(dqm->success) {dqm->success->push_back(success);}
831832
if(dqm->semaphore) {
832833
sem_post(dqm->semaphore);
833834
}
@@ -842,23 +843,23 @@ void ctrlm_obj_network_ble_t::req_process_ir_clear_codes(void *data, int size) {
842843
g_assert(dqm);
843844
g_assert(size == sizeof(ctrlm_main_queue_msg_ir_clear_t));
844845

845-
if(dqm->success) {*(dqm->success) = false;}
846+
bool success = false;
846847

847848
if (!ready_) {
848849
XLOGD_FATAL("Network is not ready!");
849850
} else {
850851
ctrlm_controller_id_t controller_id = dqm->controller_id;
851-
if (!controller_exists(controller_id)) {
852+
if (!is_managed_by_network(controller_id)) {
853+
XLOGD_ERROR("Controller %d is not managed by the %s network", controller_id, name_get());
854+
} else if (!controller_exists(controller_id)) {
852855
XLOGD_ERROR("Controller doesn't exist!");
853856
} else {
854857

855858
if (ble_rcu_interface_) {
856859
if (!ble_rcu_interface_->eraseIrSignals(controllers_[controller_id]->ieee_address_get().get_value())) {
857860
XLOGD_ERROR("failed to erase IR signal waveforms on remote");
858861
} else {
859-
860-
if (dqm->success) { *(dqm->success) = true; }
861-
862+
success = true;
862863
ir_rf_database_.clear_ir_codes();
863864
XLOGD_INFO("\n%s", ir_rf_database_.to_string(true).c_str());
864865
controllers_[controller_id]->irdb_entry_id_name_set(CTRLM_IRDB_DEV_TYPE_TV, "0");
@@ -868,6 +869,7 @@ void ctrlm_obj_network_ble_t::req_process_ir_clear_codes(void *data, int size) {
868869
ir_rf_database_.store_db();
869870
}
870871
}
872+
if(dqm->success) {dqm->success->push_back(success);}
871873
if(dqm->semaphore) {
872874
sem_post(dqm->semaphore);
873875
}
@@ -973,7 +975,7 @@ void ctrlm_obj_network_ble_t::req_process_find_my_remote(void *data, int size) {
973975
ctrlm_controller_id_t controller_id = get_last_used_controller();
974976

975977
if (CTRLM_HAL_CONTROLLER_ID_INVALID == controller_id) {
976-
XLOGD_ERROR("no connected controllers to find!!");
978+
XLOGD_ERROR("no connected %s controllers to find!!", name_get());
977979
dqm->params->set_result(CTRLM_IARM_CALL_RESULT_ERROR, network_id_get());
978980
} else {
979981
if (ble_rcu_interface_) {
@@ -2440,7 +2442,7 @@ void ctrlm_obj_network_ble_t::controller_remove(ctrlm_controller_id_t controller
24402442

24412443
ctrlm_controller_id_t ctrlm_obj_network_ble_t::controller_id_assign() {
24422444
// Get the next available controller id
2443-
for(ctrlm_controller_id_t index = 1; index < CTRLM_MAIN_CONTROLLER_ID_ALL; index++) {
2445+
for(ctrlm_controller_id_t index = BLE_RCU_ID_RANGE_MIN; index < BLE_RCU_ID_RANGE_MAX; index++) {
24442446
if(!controller_exists(index)) {
24452447
XLOGD_INFO("controller id %u", index);
24462448
return(index);
@@ -2463,10 +2465,26 @@ void ctrlm_obj_network_ble_t::controllers_load() {
24632465
XLOGD_WARN("deleting legacy IR controller object");
24642466
add_controller->db_destroy();
24652467
delete add_controller;
2466-
} else {
2467-
XLOGD_INFO("adding BLE controller with ID = 0x%X", id);
2468-
controllers_[id] = add_controller;
2468+
continue;
24692469
}
2470+
if (!is_managed_by_network(id)) {
2471+
ctrlm_controller_id_t new_id = controller_id_assign();
2472+
2473+
add_controller->db_destroy(); // safely can destroy the old entry since it was loaded earlier
2474+
2475+
if (new_id == 0) {
2476+
XLOGD_ERROR("Unable to assign a new ID - deleting controller <%d>", id);
2477+
delete add_controller;
2478+
continue;
2479+
}
2480+
2481+
add_controller->update_controller_id_and_db_entry(db_name_get(), network_id_get(), new_id);
2482+
add_controller->db_create(); // create the new entry with its new ID
2483+
XLOGD_WARN("Legacy BLE RCU controller id <%d> found - updating controller id to <%d>", id, new_id);
2484+
id = new_id;
2485+
}
2486+
XLOGD_INFO("adding BLE controller with ID = 0x%X", id);
2487+
controllers_[id] = add_controller;
24702488
}
24712489
}
24722490

@@ -2655,3 +2673,7 @@ void ctrlm_obj_network_ble_t::start_controller_audio_streaming(ctrlm_voice_start
26552673
params->m_fd = fd;
26562674
params->m_started = true;
26572675
}
2676+
2677+
bool ctrlm_obj_network_ble_t::is_managed_by_network(ctrlm_controller_id_t id) {
2678+
return (id >= BLE_RCU_ID_RANGE_MIN && id < BLE_RCU_ID_RANGE_MAX);
2679+
}

src/ble/ctrlm_ble_network.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141

4242
// End Includes
4343

44+
#define BLE_RCU_ID_RANGE_MIN (NETWORK_ID_BASE_BLE)
45+
#define BLE_RCU_ID_RANGE_MAX ((BLE_RCU_ID_RANGE_MIN)+BLE_MAX_MANAGED_RCUS+1) // +1 as a buffer for pairing
4446

4547
typedef struct {
4648
ctrlm_main_queue_msg_header_t header;
@@ -194,6 +196,9 @@ class ctrlm_obj_network_ble_t : public ctrlm_obj_network_t {
194196

195197
virtual void start_controller_audio_streaming(ctrlm_voice_start_audio_params_t *params);
196198

199+
protected:
200+
virtual bool is_managed_by_network(ctrlm_controller_id_t id);
201+
197202
private:
198203
ctrlm_obj_network_ble_t();
199204

src/ble/hal/blercu/blercucontroller.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ BleRcuControllerImpl::BleRcuControllerImpl(const shared_ptr<const ConfigSettings
6565
, m_adapter(adapter)
6666
, m_pairingStateMachine(config, m_adapter)
6767
, m_lastError(BleRcuError::NoError)
68-
, m_maxManagedDevices(1)
68+
, m_maxManagedDevices(BLE_MAX_MANAGED_RCUS)
6969
, m_state(Initialising)
7070
, m_ignorePairingFailure(false)
7171
{

src/ble/hal/blercu/blercucontroller_p.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535

3636
#include <string>
3737

38+
#define BLE_MAX_MANAGED_RCUS (1)
39+
3840
class ConfigSettings;
3941

4042
class BleRcuAdapter;
4143
class BleRcuDevice;
4244

43-
44-
4545
class BleRcuControllerImpl final : public BleRcuController
4646
{
4747
public:

src/ctrlm_controller.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,3 +410,20 @@ uint8_t ctrlm_obj_controller_t::get_upgrade_increment() const {
410410
bool ctrlm_obj_controller_t::is_upgrade_progress_at_increment() const {
411411
return ((upgrade_progress_ % upgrade_increment_ == 0) || (upgrade_progress_ == 100));
412412
}
413+
414+
void ctrlm_obj_controller_t::update_controller_id_and_db_entry(std::string db_name, ctrlm_network_id_t network_id, ctrlm_controller_id_t new_id) {
415+
controller_id_ = new_id;
416+
std::stringstream new_controller_db_table;
417+
new_controller_db_table << db_name << "_" << COUT_HEX_MODIFIER << (int)network_id << "_controller_" << COUT_HEX_MODIFIER << (int)new_id;
418+
std::string new_table = new_controller_db_table.str();
419+
420+
ieee_address_->set_table(new_table);
421+
time_binding_->set_table(new_table);
422+
last_activity_time_->set_table(new_table);
423+
last_key_time_->set_table(new_table);
424+
last_key_code_->set_table(new_table);
425+
irdb_entry_id_name_tv_->set_table(new_table);
426+
irdb_entry_id_name_avr_->set_table(new_table);
427+
voice_metrics_->set_table(new_table);
428+
ota_failure_cnt_from_last_success_->set_table(new_table);
429+
}

src/ctrlm_controller.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class ctrlm_obj_controller_t
6767
std::string stb_name_get() const;
6868
void set_device_minor_id(int device_minor_id);
6969
int get_device_minor_id() const;
70+
void update_controller_id_and_db_entry(std::string db_name, ctrlm_network_id_t network_id, ctrlm_controller_id_t id);
7071

7172
virtual ctrlm_controller_capabilities_t get_capabilities() const;
7273

src/ctrlm_main.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,6 @@ using namespace std;
113113

114114
#define CTRLM_MAIN_QUEUE_REPEAT_DELAY (5000)
115115

116-
#define NETWORK_ID_BASE_RF4CE 1
117-
#define NETWORK_ID_BASE_IP 11
118-
#define NETWORK_ID_BASE_BLE 21
119-
#define NETWORK_ID_BASE_CUSTOM 41
120-
121116
#define CTRLM_MAIN_FIRST_BOOT_TIME_MAX (180) // maximum amount of uptime allowed (in seconds) for declaring "first boot"
122117

123118
typedef void (*ctrlm_queue_push_t)(gpointer);

src/ctrlm_network.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,3 +1079,8 @@ void ctrlm_obj_network_t::start_controller_audio_streaming(ctrlm_voice_start_aud
10791079
XLOGD_WARN("not implemented for %s network", name_get());
10801080
return;
10811081
}
1082+
1083+
bool ctrlm_obj_network_t::is_managed_by_network(ctrlm_controller_id_t) {
1084+
XLOGD_WARN("not implemented for %s network", name_get());
1085+
return false;
1086+
}

0 commit comments

Comments
 (0)