|
|
@ -84,16 +84,9 @@ struct sSVPublisher {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
static bool
|
|
|
|
preparePacketBuffer(SVPublisher self, CommParameters* parameters, const char* interfaceID)
|
|
|
|
preparePacketBuffer(SVPublisher self, CommParameters* parameters, const char* interfaceId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint8_t srcAddr[6];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (interfaceID != NULL)
|
|
|
|
|
|
|
|
Ethernet_getInterfaceMACAddress(interfaceID, srcAddr);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
Ethernet_getInterfaceMACAddress(CONFIG_ETHERNET_INTERFACE_ID, srcAddr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t defaultDstAddr[] = CONFIG_SV_DEFAULT_DST_ADDRESS;
|
|
|
|
uint8_t defaultDstAddr[] = CONFIG_SV_DEFAULT_DST_ADDRESS;
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t* dstAddr;
|
|
|
|
uint8_t* dstAddr;
|
|
|
@ -101,6 +94,13 @@ preparePacketBuffer(SVPublisher self, CommParameters* parameters, const char* in
|
|
|
|
uint16_t vlanId;
|
|
|
|
uint16_t vlanId;
|
|
|
|
uint16_t appId;
|
|
|
|
uint16_t appId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t srcAddr[6];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (interfaceId != NULL)
|
|
|
|
|
|
|
|
Ethernet_getInterfaceMACAddress(interfaceId, srcAddr);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
Ethernet_getInterfaceMACAddress(CONFIG_ETHERNET_INTERFACE_ID, srcAddr);
|
|
|
|
|
|
|
|
|
|
|
|
if (parameters == NULL) {
|
|
|
|
if (parameters == NULL) {
|
|
|
|
dstAddr = defaultDstAddr;
|
|
|
|
dstAddr = defaultDstAddr;
|
|
|
|
priority = CONFIG_SV_DEFAULT_PRIORITY;
|
|
|
|
priority = CONFIG_SV_DEFAULT_PRIORITY;
|
|
|
@ -114,11 +114,19 @@ preparePacketBuffer(SVPublisher self, CommParameters* parameters, const char* in
|
|
|
|
appId = parameters->appId;
|
|
|
|
appId = parameters->appId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (interfaceID != NULL)
|
|
|
|
if (interfaceId != NULL)
|
|
|
|
self->ethernetSocket = Ethernet_createSocket(interfaceID, dstAddr);
|
|
|
|
self->ethernetSocket = Ethernet_createSocket(interfaceId, dstAddr);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
self->ethernetSocket = Ethernet_createSocket(CONFIG_ETHERNET_INTERFACE_ID, dstAddr);
|
|
|
|
self->ethernetSocket = Ethernet_createSocket(CONFIG_ETHERNET_INTERFACE_ID, dstAddr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (self->ethernetSocket == NULL) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (DEBUG_SV_PUBLISHER)
|
|
|
|
|
|
|
|
printf("SV_PUBLISHER: Failed to allocate Ethernet interface\n");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
self->buffer = (uint8_t*) GLOBAL_MALLOC(SV_MAX_MESSAGE_SIZE);
|
|
|
|
self->buffer = (uint8_t*) GLOBAL_MALLOC(SV_MAX_MESSAGE_SIZE);
|
|
|
|
|
|
|
|
|
|
|
|
memcpy(self->buffer, dstAddr, 6);
|
|
|
|
memcpy(self->buffer, dstAddr, 6);
|
|
|
@ -161,6 +169,8 @@ preparePacketBuffer(SVPublisher self, CommParameters* parameters, const char* in
|
|
|
|
self->buffer[bufPos++] = 0x00;
|
|
|
|
self->buffer[bufPos++] = 0x00;
|
|
|
|
|
|
|
|
|
|
|
|
self->payloadStart = bufPos;
|
|
|
|
self->payloadStart = bufPos;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -287,9 +297,15 @@ SVPublisher_create(CommParameters* parameters, const char* interfaceId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SVPublisher self = (SVPublisher) GLOBAL_CALLOC(1, sizeof(struct sSVPublisher));
|
|
|
|
SVPublisher self = (SVPublisher) GLOBAL_CALLOC(1, sizeof(struct sSVPublisher));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (self) {
|
|
|
|
self->asduList = NULL;
|
|
|
|
self->asduList = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
preparePacketBuffer(self, parameters, interfaceId);
|
|
|
|
if (preparePacketBuffer(self, parameters, interfaceId) == false) {
|
|
|
|
|
|
|
|
GLOBAL_FREEMEM(self);
|
|
|
|
|
|
|
|
self = NULL;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return self;
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
}
|
|
|
|