feat(gateway_bacnet): add support for new BACnet object types and enhance state management functions

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Tony
2026-05-04 01:18:44 +08:00
parent 30a96c5125
commit 8aa5a451a4
4 changed files with 196 additions and 1 deletions
@@ -42,16 +42,32 @@ GatewayBacnetServer* g_server = nullptr;
gateway_bacnet_object_kind_t ToBacnetKind(BridgeObjectType type) {
switch (type) {
case BridgeObjectType::analogInput:
return GW_BACNET_OBJECT_ANALOG_INPUT;
case BridgeObjectType::analogValue:
return GW_BACNET_OBJECT_ANALOG_VALUE;
case BridgeObjectType::analogOutput:
return GW_BACNET_OBJECT_ANALOG_OUTPUT;
case BridgeObjectType::binaryInput:
return GW_BACNET_OBJECT_BINARY_INPUT;
case BridgeObjectType::binaryValue:
return GW_BACNET_OBJECT_BINARY_VALUE;
case BridgeObjectType::binaryOutput:
return GW_BACNET_OBJECT_BINARY_OUTPUT;
case BridgeObjectType::multiStateInput:
return GW_BACNET_OBJECT_MULTI_STATE_INPUT;
case BridgeObjectType::multiStateValue:
return GW_BACNET_OBJECT_MULTI_STATE_VALUE;
case BridgeObjectType::multiStateOutput:
return GW_BACNET_OBJECT_MULTI_STATE_OUTPUT;
case BridgeObjectType::holdingRegister:
return GW_BACNET_OBJECT_ANALOG_VALUE;
case BridgeObjectType::inputRegister:
return GW_BACNET_OBJECT_ANALOG_INPUT;
case BridgeObjectType::coil:
return GW_BACNET_OBJECT_BINARY_OUTPUT;
case BridgeObjectType::discreteInput:
return GW_BACNET_OBJECT_BINARY_INPUT;
default:
return GW_BACNET_OBJECT_UNKNOWN;
}
@@ -59,16 +75,24 @@ gateway_bacnet_object_kind_t ToBacnetKind(BridgeObjectType type) {
BridgeObjectType FromBacnetKind(gateway_bacnet_object_kind_t kind) {
switch (kind) {
case GW_BACNET_OBJECT_ANALOG_INPUT:
return BridgeObjectType::analogInput;
case GW_BACNET_OBJECT_ANALOG_VALUE:
return BridgeObjectType::analogValue;
case GW_BACNET_OBJECT_ANALOG_OUTPUT:
return BridgeObjectType::analogOutput;
case GW_BACNET_OBJECT_BINARY_INPUT:
return BridgeObjectType::binaryInput;
case GW_BACNET_OBJECT_BINARY_VALUE:
return BridgeObjectType::binaryValue;
case GW_BACNET_OBJECT_BINARY_OUTPUT:
return BridgeObjectType::binaryOutput;
case GW_BACNET_OBJECT_MULTI_STATE_INPUT:
return BridgeObjectType::multiStateInput;
case GW_BACNET_OBJECT_MULTI_STATE_VALUE:
return BridgeObjectType::multiStateValue;
case GW_BACNET_OBJECT_MULTI_STATE_OUTPUT:
return BridgeObjectType::multiStateOutput;
default:
return BridgeObjectType::unknown;
}