pw_protobuf: Make generated enum upper snake case
This change updates the naming convention of generated proto enums to be
consistent with other proto libraries.
Change-Id: I849b526bc1b60de8215c5d0c4a3c387c5e074ed6
diff --git a/pw_protobuf/codegen_test.cc b/pw_protobuf/codegen_test.cc
index cf8969b..273b170 100644
--- a/pw_protobuf/codegen_test.cc
+++ b/pw_protobuf/codegen_test.cc
@@ -40,23 +40,23 @@
pigweed.WriteMagicNumber(73);
pigweed.WriteZiggy(-111);
pigweed.WriteErrorMessage("not a typewriter");
- pigweed.WriteBin(Pigweed::Protobuf::Binary::kZero);
+ pigweed.WriteBin(Pigweed::Protobuf::Binary::ZERO);
{
Pigweed::Pigweed::Encoder pigweed_pigweed = pigweed.GetPigweedEncoder();
- pigweed_pigweed.WriteStatus(Bool::kFileNotFound);
+ pigweed_pigweed.WriteStatus(Bool::FILE_NOT_FOUND);
}
{
Proto::Encoder proto = pigweed.GetProtoEncoder();
- proto.WriteBin(Proto::Binary::kOff);
- proto.WritePigweedPigweedBin(Pigweed::Pigweed::Binary::kZero);
- proto.WritePigweedProtobufBin(Pigweed::Protobuf::Binary::kZero);
+ proto.WriteBin(Proto::Binary::OFF);
+ proto.WritePigweedPigweedBin(Pigweed::Pigweed::Binary::ZERO);
+ proto.WritePigweedProtobufBin(Pigweed::Protobuf::Binary::ZERO);
{
Pigweed::Protobuf::Compiler::Encoder meta = proto.GetMetaEncoder();
meta.WriteFileName("/etc/passwd");
- meta.WriteStatus(Pigweed::Protobuf::Compiler::Status::kFubar);
+ meta.WriteStatus(Pigweed::Protobuf::Compiler::Status::FUBAR);
}
{
@@ -79,7 +79,7 @@
attributes.WriteValue("left-soc");
}
- device_info.WriteStatus(DeviceInfo::DeviceStatus::kPanic);
+ device_info.WriteStatus(DeviceInfo::DeviceStatus::PANIC);
}
}
}
diff --git a/pw_protobuf/py/pw_protobuf/proto_structures.py b/pw_protobuf/py/pw_protobuf/proto_structures.py
index cd65060..600e494 100644
--- a/pw_protobuf/py/pw_protobuf/proto_structures.py
+++ b/pw_protobuf/py/pw_protobuf/proto_structures.py
@@ -185,10 +185,6 @@
class ProtoEnum(ProtoNode):
"""Representation of an enum in a .proto file."""
-
- # Prefix for names of values in C++ enums.
- ENUM_PREFIX: str = 'k'
-
def __init__(self, name: str):
super().__init__(name)
self._values: List[Tuple[str, int]] = []
@@ -200,9 +196,7 @@
return list(self._values)
def add_value(self, name: str, value: int) -> None:
- name = '{}{}'.format(ProtoEnum.ENUM_PREFIX,
- ProtoMessageField.canonicalize_name(name))
- self._values.append((name, value))
+ self._values.append((ProtoMessageField.upper_snake_case(name), value))
def _supports_child(self, child: ProtoNode) -> bool:
# Enums cannot have nested children.
@@ -255,17 +249,17 @@
field_type: int,
type_node: Optional[ProtoNode] = None,
repeated: bool = False):
- self._name: str = self.canonicalize_name(field_name)
+ self._field_name = field_name
self._number: int = field_number
self._type: int = field_type
self._type_node: Optional[ProtoNode] = type_node
self._repeated: bool = repeated
def name(self) -> str:
- return self._name
+ return self.upper_camel_case(self._field_name)
def enum_name(self) -> str:
- return '{}{}'.format(ProtoEnum.ENUM_PREFIX, self._name)
+ return self.upper_snake_case(self._field_name)
def number(self) -> int:
return self._number
@@ -280,9 +274,14 @@
return self._repeated
@staticmethod
- def canonicalize_name(field_name: str) -> str:
+ def upper_camel_case(field_name: str) -> str:
"""Converts a field name to UpperCamelCase."""
name_components = field_name.split('_')
for i, _ in enumerate(name_components):
name_components[i] = name_components[i].lower().capitalize()
return ''.join(name_components)
+
+ @staticmethod
+ def upper_snake_case(field_name: str) -> str:
+ """Converts a field name to UPPER_SNAKE_CASE."""
+ return field_name.upper()
diff --git a/pw_protobuf_compiler/py/pw_protobuf_compiler/generate_protos.py b/pw_protobuf_compiler/py/pw_protobuf_compiler/generate_protos.py
index b73a599..96c8179 100644
--- a/pw_protobuf_compiler/py/pw_protobuf_compiler/generate_protos.py
+++ b/pw_protobuf_compiler/py/pw_protobuf_compiler/generate_protos.py
@@ -101,7 +101,7 @@
include_paths = [f'-I{path}' for path in args.include_paths]
include_paths += [f'-I{line.strip()}' for line in args.include_file]
- return pw_cli.process.run(
+ process = pw_cli.process.run(
'protoc',
'-I',
args.module_path,
@@ -110,7 +110,12 @@
*include_paths,
*lang_args,
*args.protos,
- ).returncode
+ )
+
+ if process.returncode != 0:
+ print(process.output.decode(), file=sys.stderr)
+
+ return process.returncode
if __name__ == '__main__':
diff --git a/pw_rpc/packet.cc b/pw_rpc/packet.cc
index e332c5e..dc631be 100644
--- a/pw_rpc/packet.cc
+++ b/pw_rpc/packet.cc
@@ -19,7 +19,7 @@
namespace pw::rpc::internal {
Packet Packet::FromBuffer(span<const std::byte> data) {
- PacketType type = PacketType::kRpc;
+ PacketType type = PacketType::RPC;
uint32_t channel_id = 0;
uint32_t service_id = 0;
uint32_t method_id = 0;
@@ -33,24 +33,24 @@
uint32_t proto_value = 0;
switch (field) {
- case RpcPacket::Fields::kType:
+ case RpcPacket::Fields::TYPE:
decoder.ReadUint32(&proto_value);
type = static_cast<PacketType>(proto_value);
break;
- case RpcPacket::Fields::kChannelId:
+ case RpcPacket::Fields::CHANNEL_ID:
decoder.ReadUint32(&channel_id);
break;
- case RpcPacket::Fields::kServiceId:
+ case RpcPacket::Fields::SERVICE_ID:
decoder.ReadUint32(&service_id);
break;
- case RpcPacket::Fields::kMethodId:
+ case RpcPacket::Fields::METHOD_ID:
decoder.ReadUint32(&method_id);
break;
- case RpcPacket::Fields::kPayload:
+ case RpcPacket::Fields::PAYLOAD:
decoder.ReadBytes(&payload);
break;
}
diff --git a/pw_rpc/packet_test.cc b/pw_rpc/packet_test.cc
index 744b7e1..9dfe333 100644
--- a/pw_rpc/packet_test.cc
+++ b/pw_rpc/packet_test.cc
@@ -25,7 +25,7 @@
constexpr byte payload[]{byte(0x00), byte(0x01), byte(0x02), byte(0x03)};
Packet packet = Packet::Empty();
- packet.set_type(PacketType::kRpc);
+ packet.set_type(PacketType::RPC);
packet.set_channel_id(12);
packet.set_service_id(0xdeadbeef);
packet.set_method_id(0x03a82921);
diff --git a/pw_rpc/public/pw_rpc/internal/packet.h b/pw_rpc/public/pw_rpc/internal/packet.h
index 2733f2e..c38798a 100644
--- a/pw_rpc/public/pw_rpc/internal/packet.h
+++ b/pw_rpc/public/pw_rpc/internal/packet.h
@@ -30,14 +30,14 @@
// Returns an empty packet with default values set.
static constexpr Packet Empty() {
- return Packet(PacketType::kRpc, 0, 0, 0, {});
+ return Packet(PacketType::RPC, 0, 0, 0, {});
}
// Encodes the packet into its wire format. Returns the encoded size.
StatusWithSize Encode(span<std::byte> buffer) const;
bool is_control() const { return !is_rpc(); }
- bool is_rpc() const { return type_ == PacketType::kRpc; }
+ bool is_rpc() const { return type_ == PacketType::RPC; }
PacketType type() const { return type_; }
uint32_t channel_id() const { return channel_id_; }
diff --git a/pw_rpc/service.cc b/pw_rpc/service.cc
index af82d19..996043c 100644
--- a/pw_rpc/service.cc
+++ b/pw_rpc/service.cc
@@ -19,7 +19,7 @@
namespace pw::rpc::internal {
void Service::ProcessPacket(const Packet& request, Packet& response) {
- response.set_type(PacketType::kRpc);
+ response.set_type(PacketType::RPC);
response.set_service_id(id_);
for (const Method& method : methods_) {