#include <mes2.h>
#include <h8/reg3067.h>

int main(int argc, char **argv) {
	char	swt[24][5];
	char	buffer[5];
	char	st[5];
	char	rrb[11];
	char	*p;
	char    *q;
	char	rrd[3];
	int	rdat;
	int	ra, rb;
	int	indat[13];
	int	bfno, stno;
	int	i, flg, fd, fg, flag;
	int	n, k, r, s, t;

	/* パスワード設定→"1234"の代わりに任意設定ＯＫ、但し半角英数字の４文字とすること。*/
	strcpy(st,"1234");

	rrb[0] = 0xdd;			/* データ送信時のダミーデータ４個、ヘッダデータと同じ順番としないこと。*/
	rrb[1] = 0xaa;
	rrb[2] = rrb[1];
	rrb[3] = rrb[0];

	/* 第１ヘッドデータ"送信、受信=0xcc",第２ヘッドデータ"送信、受信=0xdd"とする、任意に変更可、相手も変更要 */ 
	rrb[4] = 0xcc;
	rrb[5] = 0xdd;
	
	PADDR = 0xff;
	PBDDR = 0xef;

	cgi_value(argv[1], "id", buffer, 12);
	
	cgi_value(argv[1], "swt0", swt[0], 3);
	cgi_value(argv[1], "swt1", swt[1], 3);
	cgi_value(argv[1], "swt2", swt[2], 3);
	cgi_value(argv[1], "swt3", swt[3], 3);
	cgi_value(argv[1], "swt4", swt[4], 3);
	cgi_value(argv[1], "swt5", swt[5], 3);
	cgi_value(argv[1], "swt6", swt[6], 3);
	cgi_value(argv[1], "swt7", swt[7], 3);
	cgi_value(argv[1], "swt8", swt[8], 3);
	cgi_value(argv[1], "swt9", swt[9], 3);
	cgi_value(argv[1], "swta", swt[10], 3);
	cgi_value(argv[1], "swtb", swt[11], 3);
	cgi_value(argv[1], "swtc", swt[12], 3);
	cgi_value(argv[1], "swtd", swt[13], 3);
	cgi_value(argv[1], "swte", swt[14], 3);
	cgi_value(argv[1], "swtf", swt[15], 3);
	cgi_value(argv[1], "swtg", swt[16], 3);
	cgi_value(argv[1], "swth", swt[17], 3);
	cgi_value(argv[1], "swti", swt[18], 3);
	cgi_value(argv[1], "swtj", swt[19], 3);
	cgi_value(argv[1], "swtk", swt[20], 3);
	cgi_value(argv[1], "swtl", swt[21], 3);
	cgi_value(argv[1], "swtm", swt[22], 3);

	flg = 1;
	for(i=0; i<=3; i++){
		bfno = buffer[i];
		stno = st[i];
		if(bfno != stno) flg = 0;
	}	

	if( flag == 1 ) flg = 0;

	ra = 0x00;
	if(swt[0][0] == 'o') ra=ra+0x01;	
	if(swt[1][0] == 'o') ra=ra+0x02;
	if(swt[2][0] == 'o') ra=ra+0x04;
	if(swt[3][0] == 'o') ra=ra+0x08;
	if(swt[4][0] == 'o') ra=ra+0x10;
	if(swt[5][0] == 'o') ra=ra+0x20;
	if(swt[6][0] == 'o') ra=ra+0x40;
	if(swt[7][0] == 'o') ra=ra+0x80;
	if(flg == 1) PADR = ra;

	rb = 0x00;
	if(swt[8][0] == 'o') rb=rb+0x01;
	if(swt[9][0] == 'o') rb=rb+0x02;
	if(swt[10][0] == 'o') rb=rb+0x04;
	if(swt[11][0] == 'o') rb=rb+0x08;
	if(swt[12][0] == 'o') rb=rb+0x20;
	if(swt[13][0] == 'o') rb=rb+0x40;
	if(swt[14][0] == 'o') rb=rb+0x80;
	if(flg == 1) PBDR = rb;

	rrb[6] = 0x00;
	if(swt[21][0] == 'o') rrb[6]=rrb[6]+0x01;
	if(swt[22][0] == 'o') rrb[6]=rrb[6]+0x02;

	rrb[7] = 0x00;
	if(swt[15][0] == 'o') rrb[7]=rrb[7]+0x01;
	if(swt[16][0] == 'o') rrb[7]=rrb[7]+0x08;
	if(swt[17][0] == 'o') rrb[7]=rrb[7]+0x10;
	if(swt[18][0] == 'o') rrb[7]=rrb[7]+0x20;
	if(swt[19][0] == 'o') rrb[7]=rrb[7]+0x40;
	if(swt[20][0] == 'o') rrb[7]=rrb[7]+0x80;
	
	rrb[8] = rrb[6];
	rrb[9] = rrb[7];

	flag = 1;
	fd = open( "com0", 0 );
	
	if(flg == 1){
		for(k=0; k<=9; k++){
			p = &rrb[k];
			t = write( fd, p, 1 );
			sleep(10);
		}

		sleep(41);					/* このウエイト微妙、受信が取れない場合多少程度！ */

		fg = 0;
		s = 0;
		do{
			q = &rrd[s];
			r = read( fd, q, 1 );
			rrd[s] = *q;
			switch(s){
				case 0:
					if( rrd[0] == 0xcc ) s = 1;
					sleep(2);						/* このウエイト変更時は微小のこと */
					break;
				case 1:
					if( rrd[1] >= 0xc3 ){
						s = 2;
					}
					else{
						s = 0;
						fg++;
					}
			}
			if( fg >= 2 ) s = 2;
		}while( s <= 1 );

/*		***** 入力データ確認用(デバッグプリント) ***** */
/*		printf("%d\r\n", rrd[0] );		 第ヘッドデータrrd[0]=d'204'(h'cc')表示 
		printf("%d\r\n", rrd[1] );		 データrrd[1]は b'11xxxx11'を１０進表示,
                                                         xxxx は入力データです。
*/
		if( rrd[1] >= 0xc3 ){
			indat[8] = 0x04 & rrd[1];
			indat[9] = 0x08 & rrd[1];
			indat[10] = 0x10 & rrd[1];
			indat[11] = 0x20 & rrd[1];
		}	
	}

	n = close( fd );
	flag = 0;

	if(flg == 1) rdat = P7DR;
	indat[0] = 0x01 & rdat;
	indat[1] = 0x02 & rdat;
	indat[2] = 0x04 & rdat;
	indat[3] = 0x08 & rdat;
	indat[4] = 0x10 & rdat;
	indat[5] = 0x20 & rdat;
	indat[6] = 0x40 & rdat;
	indat[7] = 0x80 & rdat;


	printf("<html><body>\r\n");
	printf("<form action=\"pkcont-1.elf\"><p>\r\n");
	printf("<strong>Pocket Controller 1</strong><br>\r\n");
	printf("PassWord-<input type=\"password\" name=\"id\" value=\"%s\" size=\"4\" maxlength=\"4\"><br>\r\n", buffer );

	if(indat[0] == 0x01){
		printf("In\r\n<font color=\"#ff0000\">0</font>");
	}
	else{
		printf("In\r\n<font color=\"#3300ff\">0</font>");
	}
	if(indat[1] == 0x02){
		printf("<font color=\"#ff0000\">1</font>");
	}
	else{
		printf("<font color=\"#3300ff\">1</font>");
	}
	if(indat[2] == 0x04){
		printf("<font color=\"#ff0000\">2</font>");
	}
	else{
		printf("<font color=\"#3300ff\">2</font>");
	}
	if(indat[3] == 0x08){
		printf("<font color=\"#ff0000\">3</font>");
	}
	else{
		printf("<font color=\"#3300ff\">3</font>");
	}
	if(indat[4] == 0x10){
		printf("<font color=\"#ff0000\">4</font>");
	}
	else{
		printf("<font color=\"#3300ff\">4</font>");
	}
	if(indat[5] == 0x20){
		printf("<font color=\"#ff0000\">5</font>");
	}
	else{
		printf("<font color=\"#3300ff\">5</font>");
	}
	if(indat[6] == 0x40){
		printf("<font color=\"#ff0000\">6</font>");
	}
	else{
		printf("<font color=\"#3300ff\">6</font>");
	}
	if(indat[7] == 0x80){
		printf("<font color=\"#ff0000\">7</font>\r\n");
	}
	else{
		printf("<font color=\"#3300ff\">7</font>\r\n");
	}
	if(indat[8] == 0x04){
		printf("<font color=\"#ff0000\">a</font>");
	}
	else{
		printf("<font color=\"#3300ff\">a</font>");
	}
	if(indat[9] == 0x08){
		printf("<font color=\"#ff0000\">b</font>");
	}
	else{
		printf("<font color=\"#3300ff\">b</font>");
	}
	if(indat[10] == 0x10){
		printf("<font color=\"#ff0000\">c</font>");
	}
	else{
		printf("<font color=\"#3300ff\">c</font>");
	}
	if(indat[11] == 0x20){
		printf("<font color=\"#ff0000\">d</font><br>\r\n");
	}
	else{
		printf("<font color=\"#3300ff\">d</font><br>\r\n");
	}

	printf("0<input type=\"checkbox\" name=\"swt0\" %s>\r\n", (swt[0][0]=='o') ? "checked" : "");
	printf("1<input type=\"checkbox\" name=\"swt1\" %s>\r\n", (swt[1][0]=='o') ? "checked" : "");
	printf("2<input type=\"checkbox\" name=\"swt2\" %s>\r\n", (swt[2][0]=='o') ? "checked" : "");
	printf("3<input type=\"checkbox\" name=\"swt3\" %s>\r\n", (swt[3][0]=='o') ? "checked" : "");
	printf("4<input type=\"checkbox\" name=\"swt4\" %s><br>\r\n", (swt[4][0]=='o') ? "checked" : "");

	printf("5<input type=\"checkbox\" name=\"swt5\" %s>\r\n", (swt[5][0]=='o') ? "checked" : "");
	printf("6<input type=\"checkbox\" name=\"swt6\" %s>\r\n", (swt[6][0]=='o') ? "checked" : "");
	printf("7<input type=\"checkbox\" name=\"swt7\" %s>\r\n", (swt[7][0]=='o') ? "checked" : "");
	printf("8<input type=\"checkbox\" name=\"swt8\" %s>\r\n", (swt[8][0]=='o') ? "checked" : "");
	printf("9<input type=\"checkbox\" name=\"swt9\" %s><br>\r\n", (swt[9][0]=='o') ? "checked" : "");

	printf("a<input type=\"checkbox\" name=\"swta\" %s>\r\n", (swt[10][0]=='o') ? "checked" : "");
	printf("b<input type=\"checkbox\" name=\"swtb\" %s>\r\n", (swt[11][0]=='o') ? "checked" : "");
	printf("c<input type=\"checkbox\" name=\"swtc\" %s>\r\n", (swt[12][0]=='o') ? "checked" : "");
	printf("d<input type=\"checkbox\" name=\"swtd\" %s>\r\n", (swt[13][0]=='o') ? "checked" : "");
	printf("e<input type=\"checkbox\" name=\"swte\" %s><br>\r\n", (swt[14][0]=='o') ? "checked" : "");

	printf("f<input type=\"checkbox\" name=\"swtf\" %s>\r\n", (swt[15][0]=='o') ? "checked" : "");
	printf("g<input type=\"checkbox\" name=\"swtg\" %s>\r\n", (swt[16][0]=='o') ? "checked" : "");
	printf("h<input type=\"checkbox\" name=\"swth\" %s>\r\n", (swt[17][0]=='o') ? "checked" : "");
	printf("i<input type=\"checkbox\" name=\"swti\" %s>\r\n", (swt[18][0]=='o') ? "checked" : "");
	printf("j<input type=\"checkbox\" name=\"swtj\" %s><br>\r\n", (swt[19][0]=='o') ? "checked" : "");

	printf("k<input type=\"checkbox\" name=\"swtk\" %s>\r\n", (swt[20][0]=='o') ? "checked" : "");
	printf("l<input type=\"checkbox\" name=\"swtl\" %s>\r\n", (swt[21][0]=='o') ? "checked" : "");
	printf("m<input type=\"checkbox\" name=\"swtm\" %s><br>\r\n", (swt[22][0]=='o') ? "checked" : "");

	printf("<input type=\"submit\" value=\"submit\"> <input type=\"reset\" value=\"reset\"><br>\r\n");
	
	printf("</form>\r\n");

	printf("</body></html>\r\n");

}
