亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? api_lib.c

?? atmel at91sam9260 LWIP移植工程
?? C
?? 第 1 頁 / 共 2 頁
字號:
    *addr = &(conn->pcb.udp->local_ip);    *port = conn->pcb.udp->local_port;    break;  case NETCONN_TCP:    *addr = &(conn->pcb.tcp->local_ip);    *port = conn->pcb.tcp->local_port;    break;  }  return (conn->err = ERR_OK);}err_tnetconn_bind(struct netconn *conn, struct ip_addr *addr,      u16_t port){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if (conn->type != NETCONN_TCP &&     conn->recvmbox == SYS_MBOX_NULL) {    if ((conn->recvmbox = sys_mbox_new()) == SYS_MBOX_NULL) {      return ERR_MEM;    }  }    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  msg->type = API_MSG_BIND;  msg->msg.conn = conn;  msg->msg.msg.bc.ipaddr = addr;  msg->msg.msg.bc.port = port;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_connect(struct netconn *conn, struct ip_addr *addr,       u16_t port){  struct api_msg *msg;    if (conn == NULL) {    return ERR_VAL;  }  if (conn->recvmbox == SYS_MBOX_NULL) {    if ((conn->recvmbox = sys_mbox_new()) == SYS_MBOX_NULL) {      return ERR_MEM;    }  }    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return ERR_MEM;  }  msg->type = API_MSG_CONNECT;  msg->msg.conn = conn;    msg->msg.msg.bc.ipaddr = addr;  msg->msg.msg.bc.port = port;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_disconnect(struct netconn *conn){  struct api_msg *msg;    if (conn == NULL) {    return ERR_VAL;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return ERR_MEM;  }  msg->type = API_MSG_DISCONNECT;  msg->msg.conn = conn;    api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_listen(struct netconn *conn){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if (conn->acceptmbox == SYS_MBOX_NULL) {    conn->acceptmbox = sys_mbox_new();    if (conn->acceptmbox == SYS_MBOX_NULL) {      return ERR_MEM;    }  }    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  msg->type = API_MSG_LISTEN;  msg->msg.conn = conn;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}struct netconn *netconn_accept(struct netconn *conn){  struct netconn *newconn;    if (conn == NULL) {    return NULL;  }    sys_mbox_fetch(conn->acceptmbox, (void *)&newconn);  /* Register event with callback */  if (conn->callback)      (*conn->callback)(conn, NETCONN_EVT_RCVMINUS, 0);    return newconn;}struct netbuf *netconn_recv(struct netconn *conn){  struct api_msg *msg;  struct netbuf *buf;  struct pbuf *p;  u16_t len;      if (conn == NULL) {    return NULL;  }    if (conn->recvmbox == SYS_MBOX_NULL) {    conn->err = ERR_CONN;    return NULL;  }  if (conn->err != ERR_OK) {    return NULL;  }  if (conn->type == NETCONN_TCP) {    if (conn->pcb.tcp->state == LISTEN) {      conn->err = ERR_CONN;      return NULL;    }    buf = memp_malloc(MEMP_NETBUF);    if (buf == NULL) {      conn->err = ERR_MEM;      return NULL;    }        sys_mbox_fetch(conn->recvmbox, (void *)&p);    if (p != NULL)    {        len = p->tot_len;        conn->recv_avail -= len;    }    else        len = 0;        /* Register event with callback */      if (conn->callback)        (*conn->callback)(conn, NETCONN_EVT_RCVMINUS, len);    /* If we are closed, we indicate that we no longer wish to receive       data by setting conn->recvmbox to SYS_MBOX_NULL. */    if (p == NULL) {      memp_free(MEMP_NETBUF, buf);      sys_mbox_free(conn->recvmbox);      conn->recvmbox = SYS_MBOX_NULL;      return NULL;    }    buf->p = p;    buf->ptr = p;    buf->fromport = 0;    buf->fromaddr = NULL;    /* Let the stack know that we have taken the data. */    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {      conn->err = ERR_MEM;      return buf;    }    msg->type = API_MSG_RECV;    msg->msg.conn = conn;    if (buf != NULL) {      msg->msg.msg.len = buf->p->tot_len;    } else {      msg->msg.msg.len = 1;    }    api_msg_post(msg);    sys_mbox_fetch(conn->mbox, NULL);    memp_free(MEMP_API_MSG, msg);  } else {    sys_mbox_fetch(conn->recvmbox, (void *)&buf);  conn->recv_avail -= buf->p->tot_len;    /* Register event with callback */    if (conn->callback)        (*conn->callback)(conn, NETCONN_EVT_RCVMINUS, buf->p->tot_len);  }        LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_recv: received %p (err %d)\n", (void *)buf, conn->err));  return buf;}err_tnetconn_send(struct netconn *conn, struct netbuf *buf){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if (conn->err != ERR_OK) {    return conn->err;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_send: sending %d bytes\n", buf->p->tot_len));  msg->type = API_MSG_SEND;  msg->msg.conn = conn;  msg->msg.msg.p = buf->p;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_write(struct netconn *conn, void *dataptr, u16_t size, u8_t copy){  struct api_msg *msg;  u16_t len;    if (conn == NULL) {    return ERR_VAL;  }  if (conn->err != ERR_OK) {    return conn->err;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  msg->type = API_MSG_WRITE;  msg->msg.conn = conn;          conn->state = NETCONN_WRITE;  while (conn->err == ERR_OK && size > 0) {    msg->msg.msg.w.dataptr = dataptr;    msg->msg.msg.w.copy = copy;        if (conn->type == NETCONN_TCP) {      if (tcp_sndbuf(conn->pcb.tcp) == 0) {  sys_sem_wait(conn->sem);  if (conn->err != ERR_OK) {    goto ret;  }      }      if (size > tcp_sndbuf(conn->pcb.tcp)) {  /* We cannot send more than one send buffer's worth of data at a     time. */  len = tcp_sndbuf(conn->pcb.tcp);      } else {  len = size;      }    } else {      len = size;    }        LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_write: writing %d bytes (%d)\n", len, copy));    msg->msg.msg.w.len = len;    api_msg_post(msg);    sys_mbox_fetch(conn->mbox, NULL);        if (conn->err == ERR_OK) {      dataptr = (void *)((u8_t *)dataptr + len);      size -= len;    } else if (conn->err == ERR_MEM) {      conn->err = ERR_OK;      sys_sem_wait(conn->sem);    } else {      goto ret;    }  } ret:  memp_free(MEMP_API_MSG, msg);  conn->state = NETCONN_NONE;    return conn->err;}err_tnetconn_close(struct netconn *conn){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  conn->state = NETCONN_CLOSE; again:  msg->type = API_MSG_CLOSE;  msg->msg.conn = conn;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  if (conn->err == ERR_MEM &&     conn->sem != SYS_SEM_NULL) {    sys_sem_wait(conn->sem);    goto again;  }  conn->state = NETCONN_NONE;  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_err(struct netconn *conn){  return conn->err;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区久久| 久久成人久久爱| 亚洲线精品一区二区三区八戒| 一区二区免费在线播放| 国产激情一区二区三区桃花岛亚洲| 在线观看亚洲a| 中文字幕av一区二区三区| 石原莉奈在线亚洲二区| 91天堂素人约啪| 久久精品欧美一区二区三区不卡 | 日韩免费视频一区| 一区二区欧美国产| 99精品1区2区| 国产午夜亚洲精品午夜鲁丝片| 日韩av一区二区三区| 欧日韩精品视频| 亚洲男人的天堂在线观看| 国产福利一区二区| 欧美成人乱码一区二区三区| 午夜久久久久久久久| 在线国产亚洲欧美| 亚洲少妇30p| 99视频精品免费视频| 国产精品婷婷午夜在线观看| 国内一区二区视频| 精品sm在线观看| 美国十次综合导航| 日韩丝袜情趣美女图片| 日韩电影免费在线看| 欧美疯狂做受xxxx富婆| 香蕉久久夜色精品国产使用方法| 欧美综合欧美视频| 亚洲不卡一区二区三区| 欧美日韩精品免费观看视频| 午夜欧美大尺度福利影院在线看| 欧美日韩情趣电影| 婷婷国产在线综合| 日韩欧美在线网站| 韩国精品一区二区| 国产亚洲人成网站| 成人激情免费视频| 亚洲色图欧美激情| 欧美日韩一区不卡| 蜜臀av一级做a爰片久久| 亚洲精品一线二线三线| 国产一区二区h| 一区二区三区中文字幕| 一本到不卡免费一区二区| 亚洲在线观看免费视频| 欧美精品色一区二区三区| 日韩av电影免费观看高清完整版| 精品国产区一区| 成人性生交大片免费看中文| 亚洲美女免费视频| 91麻豆精品国产| 中文字幕一区二区三区乱码在线| 一区二区三区日韩精品| 欧美老人xxxx18| 久久国产精品色婷婷| 国产农村妇女精品| 色视频成人在线观看免| 日本免费在线视频不卡一不卡二| 精品理论电影在线观看| 成人免费观看男女羞羞视频| 亚洲三级理论片| 欧美一级高清片在线观看| 国产不卡在线一区| 亚洲福利一二三区| 久久综合色天天久久综合图片| 国产福利一区在线观看| 亚洲伊人色欲综合网| 欧美tickling挠脚心丨vk| 成人avav影音| 热久久国产精品| 中文字幕免费一区| 在线播放日韩导航| 成人aaaa免费全部观看| 青椒成人免费视频| 亚洲精品视频免费看| 久久综合国产精品| 欧美精品电影在线播放| 成人黄色综合网站| 九九热在线视频观看这里只有精品| 中文字幕不卡在线播放| 欧美日韩国产在线观看| 国产**成人网毛片九色 | 日本色综合中文字幕| **欧美大码日韩| 97se亚洲国产综合在线| 老司机一区二区| 自拍偷在线精品自拍偷无码专区| 538prom精品视频线放| 色系网站成人免费| 精品午夜一区二区三区在线观看 | 欧美一区三区二区| 色呦呦国产精品| 成人avav影音| 国产v综合v亚洲欧| 裸体在线国模精品偷拍| 午夜精品一区二区三区三上悠亚| 成人欧美一区二区三区白人| 久久久久久毛片| 精品国产乱码久久久久久夜甘婷婷 | 精品1区2区3区| 亚洲成人av福利| 日韩一区中文字幕| 国产欧美日韩三级| 精品久久人人做人人爰| 制服丝袜中文字幕亚洲| 在线看一区二区| 日本道在线观看一区二区| 99国产精品一区| 不卡av免费在线观看| 成人伦理片在线| 不卡的电影网站| av欧美精品.com| 91丨porny丨国产| 色欲综合视频天天天| 色综合久久久久久久久| 91蜜桃传媒精品久久久一区二区| 99精品1区2区| 91福利资源站| 欧美日韩国产一二三| 91麻豆精品国产自产在线观看一区 | 亚洲视频免费看| 亚洲免费av网站| 亚洲不卡在线观看| 日本不卡视频在线| 看国产成人h片视频| 韩国一区二区三区| 国产成人免费高清| 色综合天天综合网天天看片| 91丨九色porny丨蝌蚪| 欧美性xxxxx极品少妇| 欧美另类久久久品| 精品sm捆绑视频| 中文字幕成人在线观看| 一区二区三区蜜桃网| 日韩高清电影一区| 国产精品1024久久| 色综合天天综合在线视频| 91.com视频| 久久毛片高清国产| 亚洲视频一区在线| 美女网站视频久久| 成人午夜精品一区二区三区| 色婷婷综合久久| 91精品国产综合久久精品麻豆| 久久精品在这里| 亚洲综合一区二区| 精品亚洲免费视频| 91麻豆精品视频| 精品欧美乱码久久久久久| 亚洲天天做日日做天天谢日日欢 | 69堂国产成人免费视频| 久久久久久久久久久久电影| 亚洲精品国产无套在线观| 免费观看在线综合| 91蜜桃在线免费视频| 精品国产凹凸成av人导航| 亚洲人成网站精品片在线观看| 日韩精品久久久久久| 99综合影院在线| 日韩西西人体444www| 国产精品乱码一区二三区小蝌蚪| 亚洲一区二区在线观看视频| 国产一区二区三区美女| 欧美午夜在线观看| 日本一区二区三区在线观看| 亚洲成人午夜电影| jlzzjlzz亚洲日本少妇| 欧美大度的电影原声| 亚洲女与黑人做爰| 成人午夜又粗又硬又大| 欧美videofree性高清杂交| 一区二区三区成人| 风流少妇一区二区| 欧美大尺度电影在线| 亚洲成人一二三| 日本高清不卡aⅴ免费网站| 亚洲精品在线观| 免费在线观看不卡| 欧美日韩一二区| 亚洲精品国产a久久久久久| 国产成人av影院| 精品国产污污免费网站入口| 日韩精品免费专区| 欧美日韩一本到| 亚洲综合一区二区| 色综合天天性综合| 国产精品三级在线观看| 国产综合色在线| 日韩欧美国产系列| 美女视频黄 久久| 欧美精品777| 婷婷成人综合网| 欧美精品v国产精品v日韩精品| 亚洲成人免费视| 欧美美女喷水视频| 日韩电影在线看|