X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Frobotsim.c;h=2d0d7bebbba15245ef27f626c76ca308418bd545;hp=5fc2e3768e9867c7b5b02ecaf382c179a322f988;hb=9d056416278ae5d772a0fc1f7d2d11a4461fb673;hpb=6914527de2ecfef9d790740c71739e7418246b96 diff --git a/projects/microb2010/mainboard/robotsim.c b/projects/microb2010/mainboard/robotsim.c index 5fc2e37..2d0d7be 100644 --- a/projects/microb2010/mainboard/robotsim.c +++ b/projects/microb2010/mainboard/robotsim.c @@ -57,9 +57,23 @@ static int32_t l_pwm, r_pwm; static int32_t l_enc, r_enc; static int fdr, fdw; +/* + * Debug with GDB: + * + * (gdb) handle SIGUSR1 pass + * Signal Stop Print Pass to program Description + * SIGUSR1 Yes Yes Yes User defined signal 1 + * (gdb) handle SIGUSR2 pass + * Signal Stop Print Pass to program Description + * SIGUSR2 Yes Yes Yes User defined signal 2 + * (gdb) handle SIGUSR1 noprint + * Signal Stop Print Pass to program Description + * SIGUSR1 No No Yes User defined signal 1 + * (gdb) handle SIGUSR2 noprint + */ /* */ -#define FILTER 97 +#define FILTER 98 #define FILTER2 (100-FILTER) #define SHIFT 4 @@ -67,11 +81,16 @@ void robotsim_dump(void) { char buf[BUFSIZ]; int len; + int16_t x, y, a; + + x = position_get_x_s16(&mainboard.pos); + y = position_get_y_s16(&mainboard.pos); + a = position_get_a_deg_s16(&mainboard.pos); +/* y = COLOR_Y(y); */ +/* a = COLOR_A(a); */ len = snprintf(buf, sizeof(buf), "pos=%d,%d,%d\n", - position_get_x_s16(&mainboard.pos), - position_get_y_s16(&mainboard.pos), - position_get_a_deg_s16(&mainboard.pos)); + x, y, a); hostsim_lock(); write(fdw, buf, len); hostsim_unlock(); @@ -91,14 +110,17 @@ robotsim_i2c_ballboard_set_mode(struct i2c_cmd_ballboard_set_mode *cmd) return 0; } -static int8_t -robotsim_i2c_cobboard_set_mode(struct i2c_cmd_cobboard_set_mode *cmd) +int8_t +robotsim_i2c_cobboard_set_mode(uint8_t mode) { char buf[BUFSIZ]; int len; - cobboard.mode = cmd->mode; - len = snprintf(buf, sizeof(buf), "cobboard=%d\n", cmd->mode); + if (cobboard.mode == mode) + return 0; + + cobboard.mode = mode; + len = snprintf(buf, sizeof(buf), "cobboard=%d\n", mode); hostsim_lock(); write(fdw, buf, len); hostsim_unlock(); @@ -127,15 +149,17 @@ robotsim_i2c_ballboard(uint8_t addr, uint8_t *buf, uint8_t size) static int8_t robotsim_i2c_cobboard(uint8_t addr, uint8_t *buf, uint8_t size) { - void *void_cmd = buf; + // void *void_cmd = buf; switch (buf[0]) { +#if 0 /* deleted */ case I2C_CMD_COBBOARD_SET_MODE: { struct i2c_cmd_cobboard_set_mode *cmd = void_cmd; robotsim_i2c_cobboard_set_mode(cmd); break; } +#endif default: break; }