Practical Robotics Modular Robot Library
Diff: serialcomms.cpp
- Revision:
- 5:6da8daaeb9f7
- Parent:
- 4:c2e933d53bea
diff -r c2e933d53bea -r 6da8daaeb9f7 serialcomms.cpp --- a/serialcomms.cpp Mon Jan 02 15:17:22 2017 +0000 +++ b/serialcomms.cpp Mon Jan 02 22:56:34 2017 +0000 @@ -7,6 +7,7 @@ char pc_command_message[3]; char allow_commands = 1; Timeout pc_command_timeout; +char acknowledge_messages = 0; void SerialComms::setup_serial_interfaces() { @@ -30,7 +31,6 @@ float dec; float l_dec; float r_dec; - int irp_delay; char colour_string[7]; char ret_message[50]; char send_message = 0; @@ -124,32 +124,27 @@ motors.set_right_motor_speed(r_dec); } else command_status = 2; break; - - // LED COMMANDS case 10: - strcpy(command,"SET LED STATES"); - sprintf(subcommand,"G:%s R:%s",_char_to_binary_char(message[1]), _char_to_binary_char(message[2])); + strcpy(command,"SET PWM PERIOD"); + int period = message[1] * 256 + message[2]; + if(period < 10) period == 10; + sprintf(subcommand,"%d uS",period); if(allow_commands) { command_status = 1; - // led.set_leds(message[1],message[2]); + motors.set_pwm_period(period); } else command_status = 2; break; - case 11: - strcpy(command,"SET RED LED STATES"); - sprintf(subcommand,"%s",_char_to_binary_char(message[1])); + // LED COMMANDS + case 12: + strcpy(command,"SET LED ANIMATION"); + sprintf(subcommand,"M:%d S:%d",message[1], message[2]); if(allow_commands) { command_status = 1; - // led.set_red_leds(message[1]); + led.start_animation(message[1],message[2]); } else command_status = 2; break; - case 12: - strcpy(command,"SET GREEN LED STATES"); - sprintf(subcommand,"%s",_char_to_binary_char(message[1])); - if(allow_commands) { - command_status = 1; - // led.set_green_leds(message[1]); - } else command_status = 2; - break; + + case 13: strcpy(command,"SET LED"); switch(message[2]) { @@ -305,6 +300,7 @@ robot.debug("Received %s request message: %s %s [%02x%02x%02x]\nReply: %s [%d ch]\n",iface, command, subcommand,message[0],message[1],message[2],ret_message,message_length); } } else { + if(acknowledge_messages){ switch(interface) { case 0: pc.printf("%c%c",ACKNOWLEDGE_MESSAGE_BYTE,command_status); @@ -313,6 +309,7 @@ bt.printf("%c%c",ACKNOWLEDGE_MESSAGE_BYTE,command_status); break; } + } switch(command_status) { case 0: robot.debug("Unrecognised %s command message [%02x%02x%02x]\n",iface,message[0],message[1],message[2]);