Я использую протокол-буферы Google для связи в своем проекте и пытаюсь использовать их инструмент командной строки proto c для ручного декодирования некоторых двоичных данных (в шестнадцатеричном формате). Это команда, которую я использую:
echo 08015a325a300a0d313932 | xxd -r -p | protoc --decode=WiFiConfigPayload wifi_config.proto
Я получаю следующую ошибку из этой команды, а также любой другой тип, указанный для "--decode":
Тип не определен: WiFiConfigPayload
Это основной файл .proto, который я использую (он был создан espressif для использования с их чипом esp32). Существуют и другие файлы .proto, которые импортирует этот файл, и их можно найти здесь , если кто-то считает это уместным.
syntax = "proto3";
package espressif;
import "constants.proto";
import "wifi_constants.proto";
message CmdGetStatus {
}
message RespGetStatus {
Status status = 1;
WifiStationState sta_state = 2;
oneof state {
WifiConnectFailedReason fail_reason = 10;
WifiConnectedState connected = 11;
}
}
message CmdSetConfig {
bytes ssid = 1;
bytes passphrase = 2;
bytes bssid = 3;
int32 channel = 4;
}
message RespSetConfig {
Status status = 1;
}
message CmdApplyConfig {
}
message RespApplyConfig {
Status status = 1;
}
enum WiFiConfigMsgType {
TypeCmdGetStatus = 0;
TypeRespGetStatus = 1;
TypeCmdSetConfig = 2;
TypeRespSetConfig = 3;
TypeCmdApplyConfig = 4;
TypeRespApplyConfig = 5;
}
message WiFiConfigPayload {
WiFiConfigMsgType msg = 1;
oneof payload {
CmdGetStatus cmd_get_status = 10;
RespGetStatus resp_get_status = 11;
CmdSetConfig cmd_set_config = 12;
RespSetConfig resp_set_config = 13;
CmdApplyConfig cmd_apply_config = 14;
RespApplyConfig resp_apply_config = 15;
}
}
Есть идеи, почему команде не удается проанализировать тип WifiConfigPayload (или любой другой тип) из файла .proto c?