这篇教程C++ ERR_IS_FATAL函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中ERR_IS_FATAL函数的典型用法代码示例。如果您正苦于以下问题:C++ ERR_IS_FATAL函数的具体用法?C++ ERR_IS_FATAL怎么用?C++ ERR_IS_FATAL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了ERR_IS_FATAL函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: conn_pollstatic err_t conn_poll(void *arg, tcp_pcb *pcb){ ConnectionState *cs = (ConnectionState*)arg; if (cs == sendingConnection) { // Data could not be sent last time, check if the connection has to be timed out sendingRetries++; if (sendingRetries == TCP_MAX_SEND_RETRIES) { reprap.GetPlatform().MessageF(UsbMessage, "Network: Could not transmit data after %.1f seconds/n", (double)((float)TCP_WRITE_TIMEOUT / 1000.0)); tcp_abort(pcb); return ERR_ABRT; } // Try to write the remaining data once again (if required) if (writeResult != ERR_OK) { writeResult = tcp_write(pcb, sendingWindow + (sendingWindowSize - sentDataOutstanding), sentDataOutstanding, 0); if (ERR_IS_FATAL(writeResult)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: Failed to write data in conn_poll (code %d)/n", writeResult); tcp_abort(pcb); return ERR_ABRT; } if (writeResult != ERR_OK && reprap.Debug(moduleNetwork)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: tcp_write resulted in error code %d/n", writeResult); } } // If that worked, try to output the remaining data (if required) if (outputResult != ERR_OK) { outputResult = tcp_output(pcb); if (ERR_IS_FATAL(outputResult)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: Failed to output data in conn_poll (code %d)/n", outputResult); tcp_abort(pcb); return ERR_ABRT; } if (outputResult != ERR_OK && reprap.Debug(moduleNetwork)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: tcp_output resulted in error code %d/n", outputResult); } } } else { reprap.GetPlatform().Message(UsbMessage, "Network: Mismatched pcb in conn_poll!/n"); } return ERR_OK;}
开发者ID:dc42,项目名称:RepRapFirmware,代码行数:54,
示例2: do_bind/** * Bind a pcb contained in a netconn * Called from netconn_bind. * * @param msg the api_msg_msg pointing to the connection and containing * the IP address and port to bind to */voiddo_bind(struct api_msg_msg *msg){ if (ERR_IS_FATAL(msg->conn->last_err)) { msg->err = msg->conn->last_err; } else { msg->err = ERR_VAL; if (msg->conn->pcb.tcp != NULL) { switch (NETCONNTYPE_GROUP(msg->conn->type)) {#if LWIP_RAW case NETCONN_RAW: msg->err = raw_bind(msg->conn->pcb.raw, msg->msg.bc.ipaddr); break;#endif /* LWIP_RAW */#if LWIP_UDP case NETCONN_UDP: msg->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port); break;#endif /* LWIP_UDP */#if LWIP_TCP case NETCONN_TCP: msg->err = tcp_bind(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port); break;#endif /* LWIP_TCP */ default: break; } } } TCPIP_APIMSG_ACK(msg);}
开发者ID:comrid1987,项目名称:jb3500,代码行数:38,
示例3: do_join_leave_group/** * Join multicast groups for UDP netconns. * Called from netconn_join_leave_group * * @param msg the api_msg_msg pointing to the connection */voiddo_join_leave_group(struct api_msg_msg *msg){ if (ERR_IS_FATAL(msg->conn->last_err)) { msg->err = msg->conn->last_err; } else { if (msg->conn->pcb.tcp != NULL) { if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {#if LWIP_UDP if (msg->msg.jl.join_or_leave == NETCONN_JOIN) { msg->err = igmp_joingroup(msg->msg.jl.netif_addr, msg->msg.jl.multiaddr); } else { msg->err = igmp_leavegroup(msg->msg.jl.netif_addr, msg->msg.jl.multiaddr); }#endif /* LWIP_UDP */#if (LWIP_TCP || LWIP_RAW) } else { msg->err = ERR_VAL;#endif /* (LWIP_TCP || LWIP_RAW) */ } } else { msg->err = ERR_CONN; } } TCPIP_APIMSG_ACK(msg);}
开发者ID:comrid1987,项目名称:jb3500,代码行数:32,
示例4: lwip_netconn_do_listen/** * Set a TCP pcb contained in a netconn into listen mode * Called from netconn_listen. * * @param msg the api_msg_msg pointing to the connection */voidlwip_netconn_do_listen(struct api_msg_msg *msg){ if (ERR_IS_FATAL(msg->conn->last_err)) { msg->err = msg->conn->last_err; } else { msg->err = ERR_CONN; if (msg->conn->pcb.tcp != NULL) { if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) { if (msg->conn->state == NETCONN_NONE) { struct tcp_pcb* lpcb;#if LWIP_IPV6 if ((msg->conn->flags & NETCONN_FLAG_IPV6_V6ONLY) == 0) {#if TCP_LISTEN_BACKLOG lpcb = tcp_listen_dual_with_backlog(msg->conn->pcb.tcp, msg->msg.lb.backlog);#else /* TCP_LISTEN_BACKLOG */ lpcb = tcp_listen_dual(msg->conn->pcb.tcp);#endif /* TCP_LISTEN_BACKLOG */ } else#endif /* LWIP_IPV6 */ {#if TCP_LISTEN_BACKLOG lpcb = tcp_listen_with_backlog(msg->conn->pcb.tcp, msg->msg.lb.backlog);#else /* TCP_LISTEN_BACKLOG */ lpcb = tcp_listen(msg->conn->pcb.tcp);#endif /* TCP_LISTEN_BACKLOG */ } if (lpcb == NULL) { /* in this case, the old pcb is still allocated */ msg->err = ERR_MEM; } else { /* delete the recvmbox and allocate the acceptmbox */ if (sys_mbox_valid(&msg->conn->recvmbox)) { /** @todo: should we drain the recvmbox here? */ sys_mbox_free(&msg->conn->recvmbox); sys_mbox_set_invalid(&msg->conn->recvmbox); } msg->err = ERR_OK; if (!sys_mbox_valid(&msg->conn->acceptmbox)) { msg->err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE); } if (msg->err == ERR_OK) { msg->conn->state = NETCONN_LISTEN; msg->conn->pcb.tcp = lpcb; tcp_arg(msg->conn->pcb.tcp, msg->conn); tcp_accept(msg->conn->pcb.tcp, accept_function); } else { /* since the old pcb is already deallocated, free lpcb now */ tcp_close(lpcb); msg->conn->pcb.tcp = NULL; } } } } else { msg->err = ERR_ARG; } } } TCPIP_APIMSG_ACK(msg);}
开发者ID:Akagi201,项目名称:lwip,代码行数:66,
示例5: net_do_write/** * Send data on a TCP pcb */static void net_do_write(void *ctx){ struct tls_net_msg *net_msg = (struct tls_net_msg *)ctx; struct tls_netconn *conn = net_msg->conn; struct tls_netconn *server_conn = NULL; //TLS_DBGPRT_INFO("s=%d,p=0x%x/n", conn->state, conn->pcb.tcp);#if 0 if (ERR_IS_FATAL(conn->last_err)) { net_msg->err = conn->last_err; } #endif if (conn->proto == TLS_NETCONN_TCP) {#if LWIP_TCP if (conn->state != NETCONN_STATE_CONNECTED) { /* netconn is connecting, closing or in blocking write */ net_msg->err = ERR_INPROGRESS; } else if (conn->pcb.tcp != NULL) { conn->write_state = true; //conn->write_offset = 0; net_msg->err = net_skt_tcp_send(net_msg); /* for both cases: if do_writemore was called, don't ACK the APIMSG since do_writemore ACKs it! */ } else { net_msg->err = ERR_CONN; TLS_DBGPRT_INFO("==>err=%d/n", net_msg->err); } if(conn->client && conn->idle_time > 0) { TLS_DBGPRT_INFO("conn->skt_num=%d, conn->client=%d/n", conn->skt_num, conn->client);// server_conn = dl_list_first(&conn->list, struct tls_netconn, list); server_conn = get_server_conn(conn); TLS_DBGPRT_INFO("server_conn=%p/n", server_conn); if(server_conn) { conn->idle_time = server_conn->idle_time; TLS_DBGPRT_INFO("update conn->idle_time %d/n", conn->idle_time); } }#else /* LWIP_TCP */ net_msg->err = ERR_VAL;#endif /* LWIP_TCP */#if (LWIP_UDP || LWIP_RAW) } else { net_msg->err = ERR_VAL;#endif /* (LWIP_UDP || LWIP_RAW) */ } //tls_mem_free(net_msg->dataptr); //if(net_msg->err != ERR_OK) { //TLS_DBGPRT_INFO("conn->proto=%d, err=%d/n", conn->proto, net_msg->err); //TLS_DBGPRT_INFO("free net_msg->dataptr=%p/n", net_msg->dataptr); sys_sem_signal(conn->op_completed); }#if 0 tls_mem_free(net_msg);#endif}
开发者ID:sdhczw,项目名称:winnermicro,代码行数:62,
示例6: do_write/** * Send some data on a TCP pcb contained in a netconn * Called from netconn_write * * @param msg the api_msg_msg pointing to the connection */voiddo_write(struct api_msg_msg *msg){ if (ERR_IS_FATAL(msg->conn->last_err)) { msg->err = msg->conn->last_err; } else { if (msg->conn->type == NETCONN_TCP) {#if LWIP_TCP if (msg->conn->state != NETCONN_NONE) { /* netconn is connecting, closing or in blocking write */ msg->err = ERR_INPROGRESS; } else if (msg->conn->pcb.tcp != NULL) { msg->conn->state = NETCONN_WRITE; /* set all the variables used by do_writemore */ LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL && msg->conn->write_offset == 0); LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0); msg->conn->current_msg = msg; msg->conn->write_offset = 0;#if LWIP_TCPIP_CORE_LOCKING msg->conn->flags &= ~NETCONN_FLAG_WRITE_DELAYED; if (do_writemore(msg->conn) != ERR_OK) { LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE); UNLOCK_TCPIP_CORE(); sys_arch_sem_wait(&msg->conn->op_completed, 0); LOCK_TCPIP_CORE(); LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE); }#else /* LWIP_TCPIP_CORE_LOCKING */ do_writemore(msg->conn);#endif /* LWIP_TCPIP_CORE_LOCKING */ /* for both cases: if do_writemore was called, don't ACK the APIMSG since do_writemore ACKs it! */ return; } else { msg->err = ERR_CONN; }#else /* LWIP_TCP */ msg->err = ERR_VAL;#endif /* LWIP_TCP */#if (LWIP_UDP || LWIP_RAW) } else { msg->err = ERR_VAL;#endif /* (LWIP_UDP || LWIP_RAW) */ } } TCPIP_APIMSG_ACK(msg);}
开发者ID:comrid1987,项目名称:jb3500,代码行数:54,
示例7: do_send/** * Send some data on a RAW or UDP pcb contained in a netconn * Called from netconn_send * * @param msg the api_msg_msg pointing to the connection */voiddo_send(struct api_msg_msg *msg){ if (ERR_IS_FATAL(msg->conn->last_err)) { msg->err = msg->conn->last_err; } else { msg->err = ERR_CONN; if (msg->conn->pcb.tcp != NULL) { switch (NETCONNTYPE_GROUP(msg->conn->type)) {#if LWIP_RAW case NETCONN_RAW: if (ip_addr_isany(&msg->msg.b->addr)) { msg->err = raw_send(msg->conn->pcb.raw, msg->msg.b->p); } else { msg->err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr); } break;#endif#if LWIP_UDP case NETCONN_UDP:#if LWIP_CHECKSUM_ON_COPY if (ip_addr_isany(&msg->msg.b->addr)) { msg->err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p, msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum); } else { msg->err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port, msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum); }#else /* LWIP_CHECKSUM_ON_COPY */ if (ip_addr_isany(&msg->msg.b->addr)) { msg->err = udp_send(msg->conn->pcb.udp, msg->msg.b->p); } else { msg->err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, &msg->msg.b->addr, msg->msg.b->port); }#endif /* LWIP_CHECKSUM_ON_COPY */ break;#endif /* LWIP_UDP */ default: break; } } } TCPIP_APIMSG_ACK(msg);}
开发者ID:comrid1987,项目名称:jb3500,代码行数:51,
示例8: lwip_netconn_do_join_leave_group/** * Join multicast groups for UDP netconns. * Called from netconn_join_leave_group * * @param msg the api_msg_msg pointing to the connection */voidlwip_netconn_do_join_leave_group(struct api_msg_msg *msg){ if (ERR_IS_FATAL(msg->conn->last_err)) { msg->err = msg->conn->last_err; } else { if (msg->conn->pcb.tcp != NULL) { if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {#if LWIP_UDP#if LWIP_IPV6 && LWIP_IPV6_MLD if (PCB_ISIPV6(msg->conn->pcb.udp)) { if (msg->msg.jl.join_or_leave == NETCONN_JOIN) { msg->err = mld6_joingroup(ipX_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)), ipX_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr))); } else { msg->err = mld6_leavegroup(ipX_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)), ipX_2_ip6(API_EXPR_REF(msg->msg.jl.multiaddr))); } } else#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ {#if LWIP_IGMP if (msg->msg.jl.join_or_leave == NETCONN_JOIN) { msg->err = igmp_joingroup(ipX_2_ip(API_EXPR_REF(msg->msg.jl.netif_addr)), ipX_2_ip(API_EXPR_REF(msg->msg.jl.multiaddr))); } else { msg->err = igmp_leavegroup(ipX_2_ip(API_EXPR_REF(msg->msg.jl.netif_addr)), ipX_2_ip(API_EXPR_REF(msg->msg.jl.multiaddr))); }#endif /* LWIP_IGMP */ }#endif /* LWIP_UDP */#if (LWIP_TCP || LWIP_RAW) } else { msg->err = ERR_VAL;#endif /* (LWIP_TCP || LWIP_RAW) */ } } else { msg->err = ERR_CONN; } } TCPIP_APIMSG_ACK(msg);}
开发者ID:mtharp,项目名称:lwip,代码行数:50,
示例9: while// Send exactly one TCP window of data and return true when this transaction can be releasedbool NetworkTransaction::Send(){ // Free up this transaction if the connection is supposed to be closed if (closeRequested) { reprap.GetNetwork().ConnectionClosed(cs, true); // This will release the transaction too return false; } // Fill up the TCP window with some data chunks from our OutputBuffer instances size_t bytesBeingSent = 0, bytesLeftToSend = TCP_WND; while (sendBuffer != nullptr && bytesLeftToSend > 0) { size_t copyLength = min<size_t>(bytesLeftToSend, sendBuffer->BytesLeft()); memcpy(sendingWindow + bytesBeingSent, sendBuffer->Read(copyLength), copyLength); bytesBeingSent += copyLength; bytesLeftToSend -= copyLength; if (sendBuffer->BytesLeft() == 0) { sendBuffer = OutputBuffer::Release(sendBuffer); if (sendBuffer == nullptr) { sendBuffer = sendStack->Pop(); } } } // We also intend to send a file, so check if we can fill up the TCP window if (sendBuffer == nullptr && bytesLeftToSend != 0 && fileBeingSent != nullptr) { // For HSMCI efficiency, read from the file in multiples of 4 bytes except at the end. // This ensures that the second and subsequent chunks can be DMA'd directly into sendingWindow. size_t bytesToRead = bytesLeftToSend & (~3); if (bytesToRead != 0) { int bytesRead = fileBeingSent->Read(sendingWindow + bytesBeingSent, bytesToRead); if (bytesRead > 0) { bytesBeingSent += bytesRead; } if (bytesRead != (int)bytesToRead) { fileBeingSent->Close(); fileBeingSent = nullptr; } } } if (bytesBeingSent == 0) { // If we have no data to send, this connection can be closed next time if (!cs->persistConnection && nextWrite == nullptr) { Close(); return false; } // We want to send data from another transaction as well, so only free up this one cs->sendingTransaction = nextWrite; return true; } // The TCP window has been filled up as much as possible, so send it now. There is no need to check // the available space in the SNDBUF queue, because we really write only one TCP window at once. writeResult = tcp_write(cs->pcb, sendingWindow, bytesBeingSent, 0); if (ERR_IS_FATAL(writeResult)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: Failed to write data in Send (code %d)/n", writeResult); tcp_abort(cs->pcb); return false; } outputResult = tcp_output(cs->pcb); if (ERR_IS_FATAL(outputResult)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: Failed to output data in Send (code %d)/n", outputResult); tcp_abort(cs->pcb); return false; } if (outputResult != ERR_OK && reprap.Debug(moduleNetwork)) { reprap.GetPlatform().MessageF(UsbMessage, "Network: tcp_output resulted in error code %d/n", outputResult); } // Set LwIP callbacks for ACK and retransmission handling tcp_poll(cs->pcb, conn_poll, TCP_WRITE_TIMEOUT / TCP_SLOW_INTERVAL / TCP_MAX_SEND_RETRIES); tcp_sent(cs->pcb, conn_sent); // Set all values for the send process sendingConnection = cs; sendingRetries = 0; sendingWindowSize = sentDataOutstanding = bytesBeingSent; return false;}
开发者ID:dc42,项目名称:RepRapFirmware,代码行数:98,
示例10: wanwuyun_taskvoid wanwuyun_task(void * pvParameters){ //创建Queue SENSOR_STRUCT *pRxSensorFrame; portBASE_TYPE xStatus; struct ip_addr WanWuYunIPaddr; static err_t err,recv_err; //网络相关结构体 struct netbuf *inbuf; uint8_t *buf; uint16_t buflen; //成功发送 = true,其他状态为 = false bool wan_send_success_flag = false; //创建Json的结构体 cJSON *DataUpReqJson, *RowJson, *DataUpResJson,*fld; char *DataOut; char double_string[]={0};#if 0 cJSON *SignInReqJson ,*SignInResJson; SignInReqJson=cJSON_CreateObject(); cJSON_AddStringToObject(SignInReqJson, "username", "jackeyjiang"); cJSON_AddStringToObject(SignInReqJson, "accessid", "AMFJA2V5AMLHBMCXNDI5NZE2NDIXMTMW"); cJSON_AddStringToObject(SignInReqJson, "appid", "9785739981"); cJSON_AddStringToObject(SignInReqJson, "dev_id", "stm32_test"); DataOut = cJSON_Print(DataUpReqJson); cJSON_Delete(SignInReqJson); vPortFree(DataOut); DataUpReqJson=cJSON_CreateArray(); cJSON_AddItemToObject(DataUpReqJson,NULL,fld = cJSON_CreateObject()); cJSON_AddStringToObject(fld, "seckey", "HgqoOLTlav5jTsefyj3nL5AkRu8UAFRf"); cJSON_AddItemToObject(fld, "row", RowJson=cJSON_CreateObject()); cJSON_AddStringToObject(RowJson, "DEV_ID", "stm32_test"); cJSON_AddNumberToObject(RowJson, "TEMPERATURE", 12.5); cJSON_AddNumberToObject(RowJson, "LATITUDE", 12.7); cJSON_AddNumberToObject(RowJson, "LONGITUDE", 12.8); //转换数据为cJSON数据 DataOut = cJSON_Print(DataUpReqJson); cJSON_Delete(DataUpReqJson); printf("%s",DataOut); vPortFree(DataOut); //解析返回的Json数据 SignInResJson = cJSON_Parse(SignInResponse); if (!SignInResJson) vPrintString("Error before: [%s]/n",cJSON_GetErrorPtr()); else {}; DataUpResJson = cJSON_Parse(DataUpResponse); if (!DataUpResJson) vPrintString("Error before: [%s]/n",cJSON_GetErrorPtr()); else {}; #endif //创建传感器队列 pRxSensor_xQueue = xQueueCreate( 2, sizeof( struct _SENSOR_STRUCT * ) ); //建立短连接,接收到队列传过来的数据,将其打包成json数据传送到万物云。 IP4_ADDR( &WanWuYunIPaddr, WANWUYUN_IP_ADDR0, WANWUYUN_IP_ADDR1, WANWUYUN_IP_ADDR2, WANWUYUN_IP_ADDR3 ); while(1) { /* Create a new connection identifier. */ STM_EVAL_LEDOff(LED2); wanwuyun_clientconn = netconn_new_with_callback(NETCONN_TCP,wanwuyun_callback); //测试 if (wanwuyun_clientconn!=NULL) { /*built a connect to wanwuyun.com server*/ //netconn_set_nonblocking(wanwuyun_clientconn, 1); //测试 err = netconn_connect(wanwuyun_clientconn,&WanWuYunIPaddr,WANWUYUN_SERVER_PORT); if (err != ERR_OK) netconn_delete(wanwuyun_clientconn); else if (err == ERR_OK) { STM_EVAL_LEDOn(LED2); vPrintString("netconn_connect wanwuyun_clientconn/r/n"); /*timeout to wait for new data to be received <Avoid death etc.> */ netconn_set_sendtimeout(wanwuyun_clientconn,300); netconn_set_recvtimeout(wanwuyun_clientconn,700); while(!ERR_IS_FATAL(wanwuyun_clientconn->last_err)) { STM_EVAL_LEDToggle(LED3); xStatus = xQueueReceive(pRxSensor_xQueue,&(pRxSensorFrame),( portTickType ) 1 ); if(xStatus == pdPASS) { //提取结构体中的数据 DataUpReqJson=cJSON_CreateArray(); cJSON_AddItemToObject(DataUpReqJson,NULL,fld = cJSON_CreateObject()); cJSON_AddStringToObject(fld, "seckey", "HgqoOLTlav5jTsefyj3nL5AkRu8UAFRf"); cJSON_AddItemToObject(fld, "row", RowJson=cJSON_CreateObject()); cJSON_AddStringToObject(RowJson, "DEV_ID", "stm32_test"); sprintf(double_string,"%f",pRxSensorFrame->temperature[0]); cJSON_AddStringToObject(RowJson, "TEMPERATURE", double_string); sprintf(double_string,"%f",pRxSensorFrame->latitude[0]); cJSON_AddStringToObject(RowJson, "LATITUDE", double_string); sprintf(double_string,"%f",pRxSensorFrame->longitude[0]); cJSON_AddStringToObject(RowJson, "LONGITUDE", double_string); //转换数据为cJSON数据 DataOut = cJSON_Print(DataUpReqJson); //printf("%d",strlen(DataOut)); cJSON_Delete(DataUpReqJson);//.........这里部分代码省略.........
开发者ID:ecm163,项目名称:STM32F4x7_ETH_LwIP_V1.1.0,代码行数:101,
注:本文中的ERR_IS_FATAL函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ ERR_MEM函数代码示例 C++ ERR_GET_LIB函数代码示例 |