読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

LPCxpresso LPC1769deで遊んでry メモ編

開発中の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(;;){}
}