forked from xuos/xiuos
fixed the bug of OPCUA free buffer and uart not response
This commit is contained in:
parent
057a6d6bb4
commit
bb5f82d303
|
@ -17970,6 +17970,11 @@ UA_SecureChannel_close(UA_SecureChannel *channel) {
|
||||||
/* Set the status to closed */
|
/* Set the status to closed */
|
||||||
channel->state = UA_SECURECHANNELSTATE_CLOSED;
|
channel->state = UA_SECURECHANNELSTATE_CLOSED;
|
||||||
|
|
||||||
|
if(channel->connection == 0)
|
||||||
|
{
|
||||||
|
ua_error("ua: [%s] conn null return!\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
/* Detach from the connection and close the connection */
|
/* Detach from the connection and close the connection */
|
||||||
if(channel->connection) {
|
if(channel->connection) {
|
||||||
if(channel->connection->state != UA_CONNECTIONSTATE_CLOSED)
|
if(channel->connection->state != UA_CONNECTIONSTATE_CLOSED)
|
||||||
|
@ -43658,6 +43663,7 @@ UA_Client_delete(UA_Client* client) {
|
||||||
UA_Client_clear(client);
|
UA_Client_clear(client);
|
||||||
UA_ClientConfig_clear(&client->config);
|
UA_ClientConfig_clear(&client->config);
|
||||||
UA_free(client);
|
UA_free(client);
|
||||||
|
client = NULL;
|
||||||
ua_run_flag = 0;
|
ua_run_flag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43978,7 +43984,7 @@ receiveResponse(UA_Client *client, void *response, const UA_DataType *responseTy
|
||||||
"Receiving the response failed with StatusCode %s",
|
"Receiving the response failed with StatusCode %s",
|
||||||
UA_StatusCode_name(retval));
|
UA_StatusCode_name(retval));
|
||||||
ua_print("ua: [%s] state %d ret %d %#x\n", __func__, client->channel.state, retval, retval);
|
ua_print("ua: [%s] state %d ret %d %#x\n", __func__, client->channel.state, retval, retval);
|
||||||
closeSecureChannel(client);
|
// closeSecureChannel(client);
|
||||||
retval = UA_STATUSCODE_BADCONNECTIONCLOSED;
|
retval = UA_STATUSCODE_BADCONNECTIONCLOSED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -44246,7 +44252,7 @@ UA_Client_run_iterate(UA_Client *client, UA_UInt32 timeout) {
|
||||||
client->sessionState < UA_SESSIONSTATE_ACTIVATED) {
|
client->sessionState < UA_SESSIONSTATE_ACTIVATED) {
|
||||||
retval = connectIterate(client, timeout);
|
retval = connectIterate(client, timeout);
|
||||||
notifyClientState(client);
|
notifyClientState(client);
|
||||||
ua_print("lw: [%s] ret %d timeout %d state %d ch %d\n", __func__, retval, timeout,
|
ua_print("lw: [%s] ret %x timeout %d state %d ch %d\n", __func__, retval, timeout,
|
||||||
client->sessionState, client->channel.state);
|
client->sessionState, client->channel.state);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -70301,16 +70307,25 @@ UA_ServerConfig_setDefaultWithSecurityPolicies(UA_ServerConfig *conf,
|
||||||
|
|
||||||
UA_Client * UA_Client_new() {
|
UA_Client * UA_Client_new() {
|
||||||
UA_ClientConfig config;
|
UA_ClientConfig config;
|
||||||
|
UA_Client *ret = NULL;
|
||||||
|
|
||||||
if(ua_run_flag)
|
if(ua_run_flag)
|
||||||
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
memset(&config, 0, sizeof(UA_ClientConfig));
|
memset(&config, 0, sizeof(UA_ClientConfig));
|
||||||
config.logger.log = UA_Log_Stdout_log;
|
config.logger.log = UA_Log_Stdout_log;
|
||||||
config.logger.context = NULL;
|
config.logger.context = NULL;
|
||||||
config.logger.clear = UA_Log_Stdout_clear;
|
config.logger.clear = UA_Log_Stdout_clear;
|
||||||
ua_run_flag = 1;
|
|
||||||
return UA_Client_newWithConfig(&config);
|
ret = UA_Client_newWithConfig(&config);
|
||||||
|
|
||||||
|
if(ret)
|
||||||
|
{
|
||||||
|
ua_run_flag = 1;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
UA_StatusCode
|
UA_StatusCode
|
||||||
|
@ -71603,6 +71618,12 @@ typedef struct TCPClientConnection {
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ClientNetworkLayerTCP_close(UA_Connection *connection) {
|
ClientNetworkLayerTCP_close(UA_Connection *connection) {
|
||||||
|
if(connection == NULL)
|
||||||
|
{
|
||||||
|
ua_error("connection NULL!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(connection->state == UA_CONNECTIONSTATE_CLOSED)
|
if(connection->state == UA_CONNECTIONSTATE_CLOSED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -106,12 +106,12 @@ static void UaShowNodeValue(UA_Variant* val)
|
||||||
else if(val->type == &UA_TYPES[UA_TYPES_FLOAT])
|
else if(val->type == &UA_TYPES[UA_TYPES_FLOAT])
|
||||||
{
|
{
|
||||||
UA_Float* ptr = (UA_Float*)val->data;
|
UA_Float* ptr = (UA_Float*)val->data;
|
||||||
ua_notice("%d (Float)\n", *ptr);
|
printf("%f (Float)\n", *ptr);
|
||||||
}
|
}
|
||||||
else if(val->type == &UA_TYPES[UA_TYPES_DOUBLE])
|
else if(val->type == &UA_TYPES[UA_TYPES_DOUBLE])
|
||||||
{
|
{
|
||||||
UA_Double* ptr = (UA_Double*)val->data;
|
UA_Double* ptr = (UA_Double*)val->data;
|
||||||
ua_notice("%d (Double)\n", *ptr);
|
printf("%f (Double)\n", *ptr);
|
||||||
}
|
}
|
||||||
else if(val->type == &UA_TYPES[UA_TYPES_STRING])
|
else if(val->type == &UA_TYPES[UA_TYPES_STRING])
|
||||||
{
|
{
|
||||||
|
|
|
@ -99,7 +99,7 @@ void ethernetif_clk_init(void)
|
||||||
{
|
{
|
||||||
const clock_enet_pll_config_t config = {.enableClkOutput = true, .enableClkOutput25M = false, .loopDivider = 1};
|
const clock_enet_pll_config_t config = {.enableClkOutput = true, .enableClkOutput25M = false, .loopDivider = 1};
|
||||||
CLOCK_InitEnetPll(&config);
|
CLOCK_InitEnetPll(&config);
|
||||||
SysTick_Config(USEC_TO_COUNT(1000U, CLOCK_GetFreq(kCLOCK_CoreSysClk)));
|
SysTick_Config(SystemCoreClock / TICK_PER_SECOND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ethernetif_gpio_init(void)
|
void ethernetif_gpio_init(void)
|
||||||
|
@ -109,9 +109,7 @@ void ethernetif_gpio_init(void)
|
||||||
IOMUXC_EnableMode(IOMUXC_GPR, kIOMUXC_GPR_ENET1TxClkOutputDir, true);
|
IOMUXC_EnableMode(IOMUXC_GPR, kIOMUXC_GPR_ENET1TxClkOutputDir, true);
|
||||||
|
|
||||||
GPIO_PinInit(GPIO1, 3, &gpio_config);
|
GPIO_PinInit(GPIO1, 3, &gpio_config);
|
||||||
GPIO_PinInit(GPIO1, 10, &gpio_config);
|
|
||||||
/* pull up the ENET_INT before RESET. */
|
/* pull up the ENET_INT before RESET. */
|
||||||
GPIO_WritePinOutput(GPIO1, 10, 1);
|
|
||||||
GPIO_WritePinOutput(GPIO1, 3, 0);
|
GPIO_WritePinOutput(GPIO1, 3, 0);
|
||||||
enet_delay();
|
enet_delay();
|
||||||
GPIO_WritePinOutput(GPIO1, 3, 1);
|
GPIO_WritePinOutput(GPIO1, 3, 1);
|
||||||
|
|
|
@ -41,11 +41,9 @@ void LPUART1_IRQHandler(int irqn, void *arg)
|
||||||
{
|
{
|
||||||
x_base lock = 0;
|
x_base lock = 0;
|
||||||
// KPrintf("LPUART1_IRQHandler \n");
|
// KPrintf("LPUART1_IRQHandler \n");
|
||||||
lock = DISABLE_INTERRUPT();
|
lock = DisableIRQ(UART1_IRQn);
|
||||||
|
|
||||||
UartIsr(&serial_bus_1, &serial_driver_1, &serial_device_1);
|
UartIsr(&serial_bus_1, &serial_driver_1, &serial_device_1);
|
||||||
|
EnableIRQ(UART1_IRQn);
|
||||||
ENABLE_INTERRUPT(lock);
|
|
||||||
}
|
}
|
||||||
DECLARE_HW_IRQ(UART1_IRQn, LPUART1_IRQHandler, NONE);
|
DECLARE_HW_IRQ(UART1_IRQn, LPUART1_IRQHandler, NONE);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue