Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/ctrlm.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <string>
#include <memory>
#include <string.h>
#include <map>
#include "ctrlm_hal.h"
#include "ctrlm_hal_rf4ce.h"
#include "ctrlm_hal_ble.h"
Expand Down Expand Up @@ -53,6 +54,7 @@ class ctrlm_voice_endpoint_t;
class ctrlm_irdb_interface_t;
class ctrlm_auth_t;
class ctrlm_telemetry_t;
class ctrlm_rcp_ipc_net_status_t;
typedef enum {
CTRLM_THREAD_MONITOR_RESPONSE_DEAD = 0,
CTRLM_THREAD_MONITOR_RESPONSE_ALIVE = 1
Expand Down Expand Up @@ -508,6 +510,7 @@ void ctrlm_update_last_key_info(int controller_id, ctrlm_key_source_t sou
ctrlm_irdb_interface_t* ctrlm_main_irdb_get();
ctrlm_auth_t* ctrlm_main_auth_get();
void ctrlm_main_auth_start_poll();
std::shared_ptr<void> ctrlm_main_all_network_rcu_status_get();
std::string ctrlm_device_id_get();
Comment thread
egalla204 marked this conversation as resolved.
std::string ctrlm_stb_name_get();
std::string ctrlm_device_mac_get();
Expand Down
34 changes: 34 additions & 0 deletions src/ctrlm_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@
#include "ctrlm_voice_obj_generic.h"
#include "ctrlm_voice_endpoint.h"
#include "ctrlm_irdb_interface.h"
#include "ctrlm_rcp_ipc_event.h"

#ifdef FDC_ENABLED
#include "xr_fdc.h"
#endif
Expand Down Expand Up @@ -877,6 +879,38 @@ void ctrlm_main_ir_last_keypress_get(ctrlm_ir_last_keypress_t *last_key_info) {
}
}

static void ctrlm_main_network_handler_execute_for_all(ctrlm_msg_handler_network_t handler, void *data, int size) {
for (auto const &network_it : g_ctrlm.networks) {
if (network_it.second && network_it.second->is_ready()) {
(network_it.second->*handler)(data, size);
}
}
Comment thread
egalla204 marked this conversation as resolved.
}

std::shared_ptr<void> ctrlm_main_all_network_rcu_status_get() {
if (g_ctrlm.main_thread != g_thread_self ()) {
XLOGD_ERROR("not called from ctrlm_main_thread!!!!!");
if(!ctrlm_is_production_build()) {
g_assert(0);
}
return nullptr;
}

std::shared_ptr<ctrlm_network_all_ipc_reply_wrapper_t<ctrlm_rcp_ipc_net_status_t>> params =
std::make_shared<ctrlm_network_all_ipc_reply_wrapper_t<ctrlm_rcp_ipc_net_status_t>>();

params->set_net_id(CTRLM_MAIN_NETWORK_ID_ALL);

ctrlm_main_queue_msg_get_rcu_status_t msg = {};
msg.params = params;

ctrlm_main_network_handler_execute_for_all((ctrlm_msg_handler_network_t)&ctrlm_obj_network_t::req_process_get_rcu_status,
&msg,
sizeof(msg));

return params;
}

void ctrlm_utils_sem_wait(){
sem_wait(&g_ctrlm.ctrlm_utils_sem);
}
Expand Down
6 changes: 3 additions & 3 deletions src/ipc/ctrlm_rcp_ipc_event.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,17 +135,17 @@ void ctrlm_rcp_ipc_net_status_t::populate_status(const ctrlm_obj_network_t &netw
}
}

ctrlm_ir_state_t ctrlm_rcp_ipc_net_status_t::get_ir_prog_state(void)
ctrlm_ir_state_t ctrlm_rcp_ipc_net_status_t::get_ir_prog_state(void) const
{
return irdb_state_;
}

ctrlm_rf_pair_state_t ctrlm_rcp_ipc_net_status_t::get_rf_pair_state(void)
ctrlm_rf_pair_state_t ctrlm_rcp_ipc_net_status_t::get_rf_pair_state(void) const
{
return pair_state_;
}

void ctrlm_rcp_ipc_net_status_t::get_controller_status_list(std::vector<ctrlm_rcp_ipc_controller_status_t> &list)
void ctrlm_rcp_ipc_net_status_t::get_controller_status_list(std::vector<ctrlm_rcp_ipc_controller_status_t> &list) const
{
for (const auto &status : controller_status_list_) {
list.push_back(status);
Expand Down
6 changes: 3 additions & 3 deletions src/ipc/ctrlm_rcp_ipc_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ class ctrlm_rcp_ipc_net_status_t : public ctrlm_virtual_json_t
ctrlm_network_type_t get_type() const { return net_type_; }

void populate_status(const ctrlm_obj_network_t &network);
ctrlm_ir_state_t get_ir_prog_state(void);
ctrlm_rf_pair_state_t get_rf_pair_state(void);
void get_controller_status_list(std::vector<ctrlm_rcp_ipc_controller_status_t> &list);
ctrlm_ir_state_t get_ir_prog_state(void) const;
ctrlm_rf_pair_state_t get_rf_pair_state(void) const;
void get_controller_status_list(std::vector<ctrlm_rcp_ipc_controller_status_t> &list) const;

private:
uint8_t api_revision_ = 0;
Expand Down
Loading
Loading