Updated proto with request->response features

This commit is contained in:
Niklas Jensen
2026-01-03 12:35:02 +01:00
committed by nikguin04
parent 719e6be8a7
commit 28bb35d104
9 changed files with 7113 additions and 6422 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3
View File
@@ -4,6 +4,7 @@
#include <WiFi.h>
#include <ArduinoJson.h>
#include <PsychicHttp.h>
#include "platform_shared/websocket_message.pb.h"
#define FT_ENABLED(feature) feature
@@ -88,6 +89,8 @@ void printFeatureConfiguration();
void features(JsonObject &root);
void features_request(socket_message_FeaturesDataRequest& fd_req, socket_message_FeaturesDataResponse& fd_res)
esp_err_t getFeatures(PsychicRequest *request);
} // namespace feature_service
+19
View File
@@ -29,6 +29,25 @@ void printFeatureConfiguration() {
ESP_LOGI("Features", "==========================================================");
}
void features_request(socket_message_FeaturesDataRequest& fd_req, socket_message_FeaturesDataResponse& fd_res) {
fd_res.camera = USE_CAMERA ? true : false;
fd_res.imu = (USE_MPU6050 || USE_BNO055) ? true : false;
fd_res.mag = (USE_HMC5883 || USE_BNO055) ? true : false;
fd_res.bmp = USE_BMP180 ? true : false;
//fd_res.sonar = USE_USS ? true : false;
fd_res.sonar = fd_req.sonar_test; // Temporarily set to a variable for testing
fd_res.servo = USE_PCA9685 ? true : false;
fd_res.ws2812 = USE_WS2812 ? true : false;
fd_res.mdns = USE_MDNS ? true : false;
fd_res.embed_www = EMBED_WEBAPP ? true : false;
strcpy(fd_res.firmware_version, APP_VERSION);
strcpy(fd_res.firmware_name, APP_NAME);
strcpy(fd_res.firmware_built_target, BUILD_TARGET);
strcpy(fd_res.variant, KINEMATICS_VARIANT_STR);
}
void features(JsonObject &root) {
root["camera"] = USE_CAMERA ? true : false;
root["imu"] = (USE_MPU6050 || USE_BNO055) ? true : false;
@@ -8,4 +8,8 @@
PB_BIND(rest_message_WifiStatus, rest_message_WifiStatus, AUTO)
PB_BIND(rest_message_WifiSettings, rest_message_WifiSettings, 2)
+36 -53
View File
@@ -33,70 +33,53 @@ typedef struct _rest_message_WifiSettings {
socket_message_KnownNetworkItem wifi_networks[8];
} rest_message_WifiSettings;
#ifdef __cplusplus
extern "C" {
#endif
/* Initializer values for message structs */
#define rest_message_WifiStatus_init_default \
{ 0, "", "", 0, "", "", 0, "", "", "", false, "" }
#define rest_message_WifiSettings_init_default \
{ \
"", 0, 0, { \
socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, \
socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, \
socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, \
socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default \
} \
}
#define rest_message_WifiStatus_init_zero \
{ 0, "", "", 0, "", "", 0, "", "", "", false, "" }
#define rest_message_WifiSettings_init_zero \
{ \
"", 0, 0, { \
socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, \
socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, \
socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, \
socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero \
} \
}
#define rest_message_WifiStatus_init_default {0, "", "", 0, "", "", 0, "", "", "", false, ""}
#define rest_message_WifiSettings_init_default {"", 0, 0, {socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default}}
#define rest_message_WifiStatus_init_zero {0, "", "", 0, "", "", 0, "", "", "", false, ""}
#define rest_message_WifiSettings_init_zero {"", 0, 0, {socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero}}
/* Field tags (for use in manual encoding/decoding) */
#define rest_message_WifiStatus_status_tag 1
#define rest_message_WifiStatus_local_ip_tag 2
#define rest_message_WifiStatus_mac_address_tag 3
#define rest_message_WifiStatus_rssi_tag 4
#define rest_message_WifiStatus_ssid_tag 5
#define rest_message_WifiStatus_bssid_tag 6
#define rest_message_WifiStatus_channel_tag 7
#define rest_message_WifiStatus_subnet_mask_tag 8
#define rest_message_WifiStatus_gateway_ip_tag 9
#define rest_message_WifiStatus_dns_ip_1_tag 10
#define rest_message_WifiStatus_dns_ip_2_tag 11
#define rest_message_WifiSettings_hostname_tag 1
#define rest_message_WifiStatus_status_tag 1
#define rest_message_WifiStatus_local_ip_tag 2
#define rest_message_WifiStatus_mac_address_tag 3
#define rest_message_WifiStatus_rssi_tag 4
#define rest_message_WifiStatus_ssid_tag 5
#define rest_message_WifiStatus_bssid_tag 6
#define rest_message_WifiStatus_channel_tag 7
#define rest_message_WifiStatus_subnet_mask_tag 8
#define rest_message_WifiStatus_gateway_ip_tag 9
#define rest_message_WifiStatus_dns_ip_1_tag 10
#define rest_message_WifiStatus_dns_ip_2_tag 11
#define rest_message_WifiSettings_hostname_tag 1
#define rest_message_WifiSettings_priority_rssi_tag 2
#define rest_message_WifiSettings_wifi_networks_tag 3
/* Struct field encoding specification for nanopb */
#define rest_message_WifiStatus_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, INT32, status, 1) \
X(a, STATIC, SINGULAR, STRING, local_ip, 2) \
X(a, STATIC, SINGULAR, STRING, mac_address, 3) \
X(a, STATIC, SINGULAR, FLOAT, rssi, 4) \
X(a, STATIC, SINGULAR, STRING, ssid, 5) \
X(a, STATIC, SINGULAR, STRING, bssid, 6) \
X(a, STATIC, SINGULAR, UINT32, channel, 7) \
X(a, STATIC, SINGULAR, STRING, subnet_mask, 8) \
X(a, STATIC, SINGULAR, STRING, gateway_ip, 9) \
X(a, STATIC, SINGULAR, STRING, dns_ip_1, 10) \
X(a, STATIC, OPTIONAL, STRING, dns_ip_2, 11)
#define rest_message_WifiStatus_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, INT32, status, 1) \
X(a, STATIC, SINGULAR, STRING, local_ip, 2) \
X(a, STATIC, SINGULAR, STRING, mac_address, 3) \
X(a, STATIC, SINGULAR, FLOAT, rssi, 4) \
X(a, STATIC, SINGULAR, STRING, ssid, 5) \
X(a, STATIC, SINGULAR, STRING, bssid, 6) \
X(a, STATIC, SINGULAR, UINT32, channel, 7) \
X(a, STATIC, SINGULAR, STRING, subnet_mask, 8) \
X(a, STATIC, SINGULAR, STRING, gateway_ip, 9) \
X(a, STATIC, SINGULAR, STRING, dns_ip_1, 10) \
X(a, STATIC, OPTIONAL, STRING, dns_ip_2, 11)
#define rest_message_WifiStatus_CALLBACK NULL
#define rest_message_WifiStatus_DEFAULT NULL
#define rest_message_WifiSettings_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, STRING, hostname, 1) \
X(a, STATIC, SINGULAR, BOOL, priority_rssi, 2) \
X(a, STATIC, REPEATED, MESSAGE, wifi_networks, 3)
#define rest_message_WifiSettings_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, STRING, hostname, 1) \
X(a, STATIC, SINGULAR, BOOL, priority_rssi, 2) \
X(a, STATIC, REPEATED, MESSAGE, wifi_networks, 3)
#define rest_message_WifiSettings_CALLBACK NULL
#define rest_message_WifiSettings_DEFAULT NULL
#define rest_message_WifiSettings_wifi_networks_MSGTYPE socket_message_KnownNetworkItem
@@ -109,9 +92,9 @@ extern const pb_msgdesc_t rest_message_WifiSettings_msg;
#define rest_message_WifiSettings_fields &rest_message_WifiSettings_msg
/* Maximum encoded size of messages (where known) */
#define REST_MESSAGE_REST_MESSAGE_PB_H_MAX_SIZE rest_message_WifiSettings_size
#define rest_message_WifiSettings_size 1547
#define rest_message_WifiStatus_size 179
#define REST_MESSAGE_REST_MESSAGE_PB_H_MAX_SIZE rest_message_WifiSettings_size
#define rest_message_WifiSettings_size 1547
#define rest_message_WifiStatus_size 179
#ifdef __cplusplus
} /* extern "C" */
@@ -8,62 +8,111 @@
PB_BIND(socket_message_Vector, socket_message_Vector, AUTO)
PB_BIND(socket_message_I2CDevice, socket_message_I2CDevice, AUTO)
PB_BIND(socket_message_PinConfig, socket_message_PinConfig, AUTO)
PB_BIND(socket_message_KnownNetworkItem, socket_message_KnownNetworkItem, AUTO)
PB_BIND(socket_message_IMUData, socket_message_IMUData, AUTO)
PB_BIND(socket_message_FeaturesDataResponse, socket_message_FeaturesDataResponse, 2)
PB_BIND(socket_message_FeaturesDataRequest, socket_message_FeaturesDataRequest, AUTO)
PB_BIND(socket_message_CorrelationRequest, socket_message_CorrelationRequest, AUTO)
PB_BIND(socket_message_CorrelationResponse, socket_message_CorrelationResponse, AUTO)
PB_BIND(socket_message_StaticSystemInformation, socket_message_StaticSystemInformation, AUTO)
PB_BIND(socket_message_IMUCalibrateData, socket_message_IMUCalibrateData, AUTO)
PB_BIND(socket_message_IMUCalibrateExecute, socket_message_IMUCalibrateExecute, AUTO)
PB_BIND(socket_message_ModeData, socket_message_ModeData, AUTO)
PB_BIND(socket_message_ControllerInputData, socket_message_ControllerInputData, AUTO)
PB_BIND(socket_message_AnalyticsData, socket_message_AnalyticsData, AUTO)
PB_BIND(socket_message_ServoPWMData, socket_message_ServoPWMData, AUTO)
PB_BIND(socket_message_ServoStateData, socket_message_ServoStateData, AUTO)
PB_BIND(socket_message_AnglesData, socket_message_AnglesData, AUTO)
PB_BIND(socket_message_I2CScanData, socket_message_I2CScanData, 2)
PB_BIND(socket_message_I2CScanDataRequest, socket_message_I2CScanDataRequest, AUTO)
PB_BIND(socket_message_PeripheralSettingsData, socket_message_PeripheralSettingsData, 2)
PB_BIND(socket_message_PeripheralSettingsDataRequest, socket_message_PeripheralSettingsDataRequest, AUTO)
PB_BIND(socket_message_WifiSettingsData, socket_message_WifiSettingsData, 2)
PB_BIND(socket_message_RSSIData, socket_message_RSSIData, AUTO)
PB_BIND(socket_message_DownloadOTAData, socket_message_DownloadOTAData, AUTO)
PB_BIND(socket_message_SonarData, socket_message_SonarData, AUTO)
PB_BIND(socket_message_HumanInputData, socket_message_HumanInputData, AUTO)
PB_BIND(socket_message_SystemInformation, socket_message_SystemInformation, 2)
PB_BIND(socket_message_WalkGaitData, socket_message_WalkGaitData, AUTO)
PB_BIND(socket_message_KinematicData, socket_message_KinematicData, AUTO)
PB_BIND(socket_message_SubscribeNotification, socket_message_SubscribeNotification, AUTO)
PB_BIND(socket_message_UnsubscribeNotification, socket_message_UnsubscribeNotification, AUTO)
PB_BIND(socket_message_PingMsg, socket_message_PingMsg, AUTO)
PB_BIND(socket_message_PongMsg, socket_message_PongMsg, AUTO)
PB_BIND(socket_message_WebsocketMessage, socket_message_WebsocketMessage, 2)
File diff suppressed because it is too large Load Diff
+40
View File
@@ -20,6 +20,44 @@ message IMUData {
float pressure = 7;
}
message FeaturesDataResponse {
string variant = 10;
string firmware_built_target = 20;
string firmware_name = 30;
string firmware_version = 40;
bool camera = 50;
bool imu = 60;
bool mag = 70;
bool bmp = 80;
bool sonar = 90;
bool servo = 100;
bool ws2812 = 110;
bool mdns = 120;
bool embed_www = 130;
}
message FeaturesDataRequest { bool sonar_test = 1; }
message CorrelationRequest {
uint32 correlation_id = 1; // Used for request-response correlation
oneof request {
// NOTE: requests must have same tag id as correlating to the response type (currently not enforced in C, but will be, and tests will fail)
FeaturesDataRequest features_data_request = 10;
}
}
message CorrelationResponse {
uint32 correlation_id = 1; // Used for request-response correlation'
uint32 stauts_code = 2;
oneof response {
// NOTE: responses must have same tag id as correlating to the request type (currently not enforced in C, but will be, and tests will fail)
FeaturesDataResponse features_data_response = 10;
}
}
enum ModesEnum {
DEACTIVATED = 0;
IDLE = 1;
@@ -121,6 +159,8 @@ message PongMsg {}
// Only ONE field will be set at a time (oneof ensures this)
message WebsocketMessage {
oneof message {
CorrelationRequest correlation_request = 10;
CorrelationResponse correlation_response = 11;
SubscribeNotification sub_notif = 20;
UnsubscribeNotification unsub_notif = 21;
PingMsg pingmsg = 30;