コード例 #1
0
ファイル: io.c プロジェクト: JeeeK/sbc09
int do_input( a) {
	static int c, f = EOF;
	if (a == 0) {
		if (f == EOF)
			f = char_input();
		if (f != EOF)
			c = f;
		return 2 + (f != EOF);
	} else if (a == 1) { /*data port*/
		if (f == EOF)
			f = char_input();
		if (f != EOF) {
			c = f;
			f = EOF;
		}
		return c;
	}
}
コード例 #2
0
ファイル: LauncherMotor.c プロジェクト: JustinEwing/R2BJT2
int main(void) {
    BOARD_Init();
    SERIAL_Init();

    //Init the motors, duh
    initMotors();

    char input;

    dbprintf("Welcome to the Motor Test Harness\n");
    dbprintf("Speed: 0-10, f: forward, s: backward\n");
    dbprintf("r: right motor, l: left motor, b: battery\n");

    while (1) {
        input = GetChar();

        char_input(input);

        DELAY(A_BIT)
    }
    return 0;
}
コード例 #3
0
ファイル: io.c プロジェクト: JeeeK/sbc09
int char_input(void) {
	int c, w, sum;
	if (!xmstat) {
		if (infile) {
			c = getc(infile);
			if (c == EOF) {
				fclose(infile);
				infile = 0;
				return char_input();
			}
			if (c == '\n')
				c = '\r';
			return c;
		} else
			return getchar();
	} else if (xmstat == 1) {
		if (xidx) {
			c = xmbuf[xidx++];
			if (xidx == 132) {
				xidx = 0;
				rcvdnak = EOF;
				acknak = 6;
			}
		} else {
			if (acknak == 21 && rcvdnak == 21 || acknak == 6 && rcvdnak == 6) {
				rcvdnak = 0;
				memset(xmbuf, 0, 132);
				w = fread(xmbuf + 3, 1, 128, xfile);
				if (w) {
					printf("Block %3d transmitted, ", blocknum);
					xmbuf[0] = 1;
					xmbuf[1] = blocknum;
					xmbuf[2] = 255 - blocknum;
					blocknum = (blocknum + 1) & 255;
					sum = 0;
					for (w = 3; w < 131; w++)
						sum = (sum + xmbuf[w]) & 255;
					xmbuf[131] = sum;
					acknak = 6;
					c = 1;
					xidx = 1;
				} else {
					printf("EOT transmitted, ");
					acknak = 4;
					c = 4;
				}
			} else if (rcvdnak == 21) {
				rcvdnak = 0;
				printf("Block %3d retransmitted, ", xmbuf[1]);
				c = xmbuf[xidx++]; /*retransmit the same block */
			} else
				c = EOF;
		}
		return c;
	} else {
		if (acknak == 4) {
			c = 6;
			acknak = 0;
			fclose(xfile);
			xfile = 0;
			xmstat = 0;
		} else if (acknak) {
			c = acknak;
			acknak = 0;
		} else
			c = EOF;
		if (c == 6)
			printf("ACK\n");
		if (c == 21)
			printf("NAK\n");
		return c;
	}
}