Skip to content

Commit 2a7caae

Browse files
committed
Add logging for reset reasons.
1 parent 82e4add commit 2a7caae

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

Common/SerialPABotBase/SerialPABotBase_Protocol.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,20 @@ typedef struct{
265265
uint32_t value;
266266
} PABB_PACK pabb_MsgInfoI32Label;
267267

268+
typedef uint8_t pabb_DeviceResetReason;
269+
#define PABB_DeviceResetReason_UNKNOWN 0x00
270+
#define PABB_DeviceResetReason_OTHER 0x01
271+
#define PABB_DeviceResetReason_POWER_ON 0x02
272+
#define PABB_DeviceResetReason_MANUAL 0x03
273+
#define PABB_DeviceResetReason_BROWNOUT 0x04
274+
#define PABB_DeviceResetReason_CRASH 0x05
275+
276+
#define PABB_MSG_INFO_DEVICE_RESET_REASON 0x26
277+
typedef struct{
278+
pabb_DeviceResetReason reason;
279+
uint32_t native_code;
280+
} PABB_PACK pabb_MsgDeviceReset;
281+
268282
////////////////////////////////////////////////////////////////////////////////
269283
// Static Requests
270284

SerialPrograms/Source/Controllers/SerialPABotBase/Messages/SerialPABotBase_MessageWrappers_BaseProtocol_Info.h

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,53 @@ class MessageType_Info_Label_h32 : public BotBaseMessageType{
135135
return ret;
136136
}
137137
};
138+
class MessageType_Info_ResetReason : public BotBaseMessageType{
139+
using Params = pabb_MsgDeviceReset;
140+
public:
141+
MessageType_Info_ResetReason()
142+
: BotBaseMessageType(
143+
"PABB_MSG_INFO_DEVICE_RESET_REASON",
144+
PABB_MSG_INFO_DEVICE_RESET_REASON,
145+
sizeof(Params)
146+
)
147+
{}
148+
virtual std::string tostr(const std::string& body) const override{
149+
std::string ret = BotBaseMessageType::tostr(body);
150+
if (!is_valid(body)){
151+
return ret;
152+
}
153+
Params params;
154+
memcpy(&params, body.data(), sizeof(params));
155+
156+
std::string reason;
157+
switch (params.reason){
158+
case PABB_DeviceResetReason_UNKNOWN:
159+
reason = "Unknown";
160+
break;
161+
case PABB_DeviceResetReason_OTHER:
162+
reason = "Other";
163+
break;
164+
case PABB_DeviceResetReason_POWER_ON:
165+
reason = "Power On";
166+
break;
167+
case PABB_DeviceResetReason_MANUAL:
168+
reason = "Manual";
169+
break;
170+
case PABB_DeviceResetReason_BROWNOUT:
171+
reason = "Brownout";
172+
break;
173+
case PABB_DeviceResetReason_CRASH:
174+
reason = "Crash";
175+
break;
176+
default:
177+
reason = "(Invalid Reason)";
178+
}
179+
180+
ret += ": reason = " + reason;
181+
ret += ", native_code = " + std::to_string(params.native_code);
182+
return ret;
183+
}
184+
};
138185

139186

140187

SerialPrograms/Source/Controllers/SerialPABotBase/SerialPABotBase_Connection.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ void SerialPABotBase_Connection::add_message_printers(){
156156
add_message_printer<MessageType_Info_String>();
157157
add_message_printer<MessageType_Info_Label_i32>();
158158
add_message_printer<MessageType_Info_Label_h32>();
159+
add_message_printer<MessageType_Info_ResetReason>();
159160

160161
// Static Requests
161162
add_message_printer<MessageType_SeqnumReset>();

0 commit comments

Comments
 (0)