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
4 changes: 4 additions & 0 deletions agent/src/beerocks/slave/son_slave_thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1126,6 +1126,10 @@ bool slave_thread::handle_cmdu_control_message(Socket *sd,
message_com::send_cmdu(monitor_socket, cmdu_tx);
break;
}
case beerocks_message::ACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST: {
LOG(WARNING) << "received ACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST";
break;
}
default: {
LOG(ERROR) << "Unknown CONTROL message, action_op: " << int(beerocks_header->action_op());
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,9 @@ enum eActionOp_CONTROL: uint8_t {
ACTION_CONTROL_CHANNEL_SCAN_RESULTS_NOTIFICATION = 0x91,
ACTION_CONTROL_CHANNEL_SCAN_ABORT_NOTIFICATION = 0x92,
ACTION_CONTROL_CHANNEL_SCAN_FINISHED_NOTIFICATION = 0x93,
ACTION_CONTROL_ENUM_END = 0x94,
ACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST = 0x94,
ACTION_CONTROL_MESSAGE_TO_RADIO_RESPONSE = 0x95,
ACTION_CONTROL_ENUM_END = 0x96,
};

enum eActionOp_BACKHAUL: uint8_t {
Expand Down Expand Up @@ -414,6 +416,8 @@ enum eActionOp_BML: uint8_t {
ACTION_BML_CLIENT_SET_CLIENT_RESPONSE = 0xda,
ACTION_BML_CLIENT_GET_CLIENT_REQUEST = 0xdb,
ACTION_BML_CLIENT_GET_CLIENT_RESPONSE = 0xdc,
ACTION_BML_MESSAGE_TO_RADIO_REQUEST = 0xde,
ACTION_BML_MESSAGE_TO_RADIO_RESPONSE = 0xdf,
ACTION_BML_ENUM_END = 0xe1,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2354,6 +2354,46 @@ class cACTION_BML_CLIENT_GET_CLIENT_RESPONSE : public BaseClass
sClient* m_client = nullptr;
};

class cACTION_BML_MESSAGE_TO_RADIO_REQUEST : public BaseClass
{
public:
cACTION_BML_MESSAGE_TO_RADIO_REQUEST(uint8_t* buff, size_t buff_len, bool parse = false);
explicit cACTION_BML_MESSAGE_TO_RADIO_REQUEST(std::shared_ptr<BaseClass> base, bool parse = false);
~cACTION_BML_MESSAGE_TO_RADIO_REQUEST();

static eActionOp_BML get_action_op(){
return (eActionOp_BML)(ACTION_BML_MESSAGE_TO_RADIO_REQUEST);
}
sMessageToRadio& params();
void class_swap() override;
bool finalize() override;
static size_t get_initial_size();

private:
bool init();
eActionOp_BML* m_action_op = nullptr;
sMessageToRadio* m_params = nullptr;
};

class cACTION_BML_MESSAGE_TO_RADIO_RESPONSE : public BaseClass
{
public:
cACTION_BML_MESSAGE_TO_RADIO_RESPONSE(uint8_t* buff, size_t buff_len, bool parse = false);
explicit cACTION_BML_MESSAGE_TO_RADIO_RESPONSE(std::shared_ptr<BaseClass> base, bool parse = false);
~cACTION_BML_MESSAGE_TO_RADIO_RESPONSE();

static eActionOp_BML get_action_op(){
return (eActionOp_BML)(ACTION_BML_MESSAGE_TO_RADIO_RESPONSE);
}
void class_swap() override;
bool finalize() override;
static size_t get_initial_size();

private:
bool init();
eActionOp_BML* m_action_op = nullptr;
};

}; // close namespace: beerocks_message

#endif //_BEEROCKS/TLVF_BEEROCKS_MESSAGE_BML_H_
Original file line number Diff line number Diff line change
Expand Up @@ -1409,6 +1409,16 @@ typedef struct sClient {
}
} __attribute__((packed)) sClient;

typedef struct sMessageToRadio {
sMacAddr radio_mac;
void struct_swap(){
radio_mac.struct_swap();
}
void struct_init(){
radio_mac.struct_init();
}
} __attribute__((packed)) sMessageToRadio;


}; // close namespace: beerocks_message

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,46 @@ class cACTION_CONTROL_CHANGE_MODULE_LOGGING_LEVEL : public BaseClass
sLoggingLevelChange* m_params = nullptr;
};

class cACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST : public BaseClass
{
public:
cACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST(uint8_t* buff, size_t buff_len, bool parse = false);
explicit cACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST(std::shared_ptr<BaseClass> base, bool parse = false);
~cACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST();

static eActionOp_CONTROL get_action_op(){
return (eActionOp_CONTROL)(ACTION_CONTROL_MESSAGE_TO_RADIO_REQUEST);
}
sMessageToRadio& params();
void class_swap() override;
bool finalize() override;
static size_t get_initial_size();

private:
bool init();
eActionOp_CONTROL* m_action_op = nullptr;
sMessageToRadio* m_params = nullptr;
};

class cACTION_CONTROL_MESSAGE_TO_RADIO_RESPONSE : public BaseClass
{
public:
cACTION_CONTROL_MESSAGE_TO_RADIO_RESPONSE(uint8_t* buff, size_t buff_len, bool parse = false);
explicit cACTION_CONTROL_MESSAGE_TO_RADIO_RESPONSE(std::shared_ptr<BaseClass> base, bool parse = false);
~cACTION_CONTROL_MESSAGE_TO_RADIO_RESPONSE();

static eActionOp_CONTROL get_action_op(){
return (eActionOp_CONTROL)(ACTION_CONTROL_MESSAGE_TO_RADIO_RESPONSE);
}
void class_swap() override;
bool finalize() override;
static size_t get_initial_size();

private:
bool init();
eActionOp_CONTROL* m_action_op = nullptr;
};

class cACTION_CONTROL_HOSTAP_CSA_ERROR_NOTIFICATION : public BaseClass
{
public:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8021,4 +8021,132 @@ bool cACTION_BML_CLIENT_GET_CLIENT_RESPONSE::init()
return true;
}

cACTION_BML_MESSAGE_TO_RADIO_REQUEST::cACTION_BML_MESSAGE_TO_RADIO_REQUEST(uint8_t* buff, size_t buff_len, bool parse) :
BaseClass(buff, buff_len, parse) {
m_init_succeeded = init();
}
cACTION_BML_MESSAGE_TO_RADIO_REQUEST::cACTION_BML_MESSAGE_TO_RADIO_REQUEST(std::shared_ptr<BaseClass> base, bool parse) :
BaseClass(base->getBuffPtr(), base->getBuffRemainingBytes(), parse){
m_init_succeeded = init();
}
cACTION_BML_MESSAGE_TO_RADIO_REQUEST::~cACTION_BML_MESSAGE_TO_RADIO_REQUEST() {
}
sMessageToRadio& cACTION_BML_MESSAGE_TO_RADIO_REQUEST::params() {
return (sMessageToRadio&)(*m_params);
}

void cACTION_BML_MESSAGE_TO_RADIO_REQUEST::class_swap()
{
tlvf_swap(8*sizeof(eActionOp_BML), reinterpret_cast<uint8_t*>(m_action_op));
m_params->struct_swap();
}

bool cACTION_BML_MESSAGE_TO_RADIO_REQUEST::finalize()
{
if (m_parse__) {
TLVF_LOG(DEBUG) << "finalize() called but m_parse__ is set";
return true;
}
if (m_finalized__) {
TLVF_LOG(DEBUG) << "finalize() called for already finalized class";
return true;
}
if (!isPostInitSucceeded()) {
TLVF_LOG(ERROR) << "post init check failed";
return false;
}
if (m_inner__) {
if (!m_inner__->finalize()) {
TLVF_LOG(ERROR) << "m_inner__->finalize() failed";
return false;
}
auto tailroom = m_inner__->getMessageBuffLength() - m_inner__->getMessageLength();
m_buff_ptr__ -= tailroom;
}
class_swap();
m_finalized__ = true;
return true;
}

size_t cACTION_BML_MESSAGE_TO_RADIO_REQUEST::get_initial_size()
{
size_t class_size = 0;
class_size += sizeof(sMessageToRadio); // params
return class_size;
}

bool cACTION_BML_MESSAGE_TO_RADIO_REQUEST::init()
{
if (getBuffRemainingBytes() < get_initial_size()) {
TLVF_LOG(ERROR) << "Not enough available space on buffer. Class init failed";
return false;
}
m_params = reinterpret_cast<sMessageToRadio*>(m_buff_ptr__);
if (!buffPtrIncrementSafe(sizeof(sMessageToRadio))) {
LOG(ERROR) << "buffPtrIncrementSafe(" << std::dec << sizeof(sMessageToRadio) << ") Failed!";
return false;
}
if (!m_parse__) { m_params->struct_init(); }
if (m_parse__) { class_swap(); }
return true;
}

cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::cACTION_BML_MESSAGE_TO_RADIO_RESPONSE(uint8_t* buff, size_t buff_len, bool parse) :
BaseClass(buff, buff_len, parse) {
m_init_succeeded = init();
}
cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::cACTION_BML_MESSAGE_TO_RADIO_RESPONSE(std::shared_ptr<BaseClass> base, bool parse) :
BaseClass(base->getBuffPtr(), base->getBuffRemainingBytes(), parse){
m_init_succeeded = init();
}
cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::~cACTION_BML_MESSAGE_TO_RADIO_RESPONSE() {
}
void cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::class_swap()
{
tlvf_swap(8*sizeof(eActionOp_BML), reinterpret_cast<uint8_t*>(m_action_op));
}

bool cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::finalize()
{
if (m_parse__) {
TLVF_LOG(DEBUG) << "finalize() called but m_parse__ is set";
return true;
}
if (m_finalized__) {
TLVF_LOG(DEBUG) << "finalize() called for already finalized class";
return true;
}
if (!isPostInitSucceeded()) {
TLVF_LOG(ERROR) << "post init check failed";
return false;
}
if (m_inner__) {
if (!m_inner__->finalize()) {
TLVF_LOG(ERROR) << "m_inner__->finalize() failed";
return false;
}
auto tailroom = m_inner__->getMessageBuffLength() - m_inner__->getMessageLength();
m_buff_ptr__ -= tailroom;
}
class_swap();
m_finalized__ = true;
return true;
}

size_t cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::get_initial_size()
{
size_t class_size = 0;
return class_size;
}

bool cACTION_BML_MESSAGE_TO_RADIO_RESPONSE::init()
{
if (getBuffRemainingBytes() < get_initial_size()) {
TLVF_LOG(ERROR) << "Not enough available space on buffer. Class init failed";
return false;
}
if (m_parse__) { class_swap(); }
return true;
}


Loading