開発中のLPCxpresso LPC1769用のソケットライブラリ。やっと少し動くようになってきた!
とりあえずNyarudino用のTCP送信スケッチをめもめも。
LPC1769からひたすらデータを送信して、uipコントローラがちゃんと動いてるか確認中。1スレッドなら大体1〜4Mbpsくらいでてますね。
/** * Nyarudinoのスケッチシステムを使う場合の実装 */ #include "boot/sketch.h" #include "NyLPC_uipService.h" void setup(void) { //EthernetAddressのセット NyLPC_TEtherMacAddr_t mac=NyLPC_TEtherMacAddr_pack(0x00,0x12,0x13,0x10,0x15,0x11); //uipサービスの初期化 NyLPC_cUipService_initialize(&mac); } static char dummy[2000]; void loop(void) { //IPアドレスの設定 NyLPC_TIpv4Addr_t ipaddr=NyLPC_TIpv4Addr_pack(192,168,128,201); NyLPC_TIpv4Addr_t netmask=NyLPC_TIpv4Addr_pack(255,255,255,0); NyLPC_TIpv4Addr_t gateway=NyLPC_TIpv4Addr_pack(192,168,128,254); NyLPC_TcTcpListener_t li; NyLPC_TcTcpSocket_t s; NyLPC_TUInt32 sl; int i,i2; char* d; for(i=0;i<2000;i++){ dummy[i]='0'+i%10; } NyLPC_cUipService_start(&ipaddr,&netmask,&gateway); //Uipの開始 NyLPC_cTcpListener_initialize(23,3,&li); //リスナ生成 NyLPC_cUipService_addListener(&li); //リスナadd //ソケット生成 NyLPC_cTcpSocket_initialize(&s); for(;;){ //listen処理 if(!NyLPC_cTcpListener_listen(&li,&s,1000/portTICK_RATE_MS)){ continue; } //とりあえずデータ送って閉じる。 for(i2=0;i2<512;i2++){ i=2000; d=&dummy[0]; while(i>0){ if(NyLPC_cTcpSocket_send(&s,d,i,&sl,portMAX_DELAY)){ d+=sl; i-=sl; }else{ NyLPC_cTcpSocket_close(&s); goto end; } } } if(i<1){ NyLPC_cTcpSocket_send(&s,"sent\n",11,&sl,portMAX_DELAY); } NyLPC_cTcpSocket_send_fin(&s); NyLPC_cTcpSocket_close(&s); end:; } //続く for(;;){} }