#define CM
#ifndef CM
/**
 * 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 send_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;
		}
		//受信ソケットはさっさと閉じる。
		NyLPC_cTcpSocket_recv_close(&s);
		//とりあえずデータ送って閉じる。
		for(i2=0;i2<1000;i2++){
			i=1000;
			d=&dummy[0];
			while(i>0){
				if(NyLPC_cTcpSocket_send(&s,d,i,&sl,portMAX_DELAY)){
					NyLPC_cTcpSocket_send_fin(&s);
					d+=sl;
					i-=sl;
				}else{
					NyLPC_cTcpSocket_send_close(&s);
					goto end;
				}
			}
		}
		if(i<1){
			if(NyLPC_cTcpSocket_send(&s,"sent\n",11,&sl,portMAX_DELAY)){
				NyLPC_cTcpSocket_send_fin(&s);
			}
		}
		NyLPC_cTcpSocket_send_close(&s);
		end:;
	}
}

void loop(void)
{
	loopback();
	for(;;){}
}
#endif
