|  |  | @ -20,17 +20,98 @@ int main(int argc, char* argv[]) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return 1; |  |  |  | 	return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     Client client = client_new(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     client_connect(client); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     union Message msg; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     poll_message(client, &msg); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if(msg.header.cmdid != SET_SDK_CONNECTION_CMDID || msg.resp.sdkconn.retcode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         fprintf(stderr, "Could not set SDK connection\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     set_sdk_mode(client, true); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     poll_message(client, &msg); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if(msg.header.cmdid != SET_SDK_MODE_CMDID || msg.resp.sdkmode.retcode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         fprintf(stderr, "Could not set SDK mode\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     subnode_reset(client); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     poll_message(client, &msg); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if(msg.header.cmdid != SUBNODE_RESET_CMDID || msg.resp.subnodereset.retcode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         fprintf(stderr, "Could not reset subnode subscription\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     subscribe_add_node(client); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     poll_message(client, &msg); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if(msg.header.cmdid != SUBSCRIBE_ADD_NODE_CMDID || (msg.resp.subnodeadd.retcode && msg.resp.subnodeadd.retcode != 0x50)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         fprintf(stderr, "Could not subscribe node\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     set_robot_mode(client, MOVEMENTMODE_FREE); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     poll_message(client, &msg); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if(msg.header.cmdid != SET_ROBOT_MODE_CMDID || msg.resp.mvmode.retcode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         fprintf(stderr, "Could not set move mode\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     bool quit = false; |  |  |  |     bool quit = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     Uint32 time = SDL_GetTicks(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         float x = 0, y = 0, z = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     while(!quit) { |  |  |  |     while(!quit) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         SDL_Event event; |  |  |  |         SDL_Event event; | 
			
		
	
		
		
			
				
					
					|  |  |  |         while(SDL_PollEvent(&event)) { |  |  |  |         while(SDL_PollEvent(&event)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             switch(event.type) { |  |  |  |             switch(event.type) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case SDL_KEYUP: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case SDL_KEYDOWN: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     switch(event.key.keysym.scancode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_LEFT: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_A: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             x = event.type == SDL_KEYUP ? 0 : -1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_RIGHT: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_D: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             x = event.type == SDL_KEYUP ? 0 : 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_UP: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_W: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             y = event.type == SDL_KEYUP ? 0 : 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_DOWN: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         case SDL_SCANCODE_S: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             y = event.type == SDL_KEYUP ? 0 : -1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         default: break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		    } | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case SDL_WINDOWEVENT: |  |  |  |                 case SDL_WINDOWEVENT: | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if(event.window.event != SDL_WINDOWEVENT_CLOSE) break; |  |  |  |                     if(event.window.event != SDL_WINDOWEVENT_CLOSE) break; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case SDL_QUIT: |  |  |  |                 case SDL_QUIT: | 
			
		
	
		
		
			
				
					
					|  |  |  |                     quit = true; |  |  |  |                     quit = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 default: break; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	    } |  |  |  | 	    } | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	Uint32 currtime = SDL_GetTicks(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if(currtime - time >= 75) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             time = currtime; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             sdk_heartbeat(client); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //poll_message(client, &msg);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //if(msg.header.cmdid != SDK_HEARTBEAT_CMDID || msg.resp.heartbeat.retcode) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //    fprintf(stderr, "Did not receive heartbeat\n");
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //    return 1;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             chassis_speed_mode(client, x, y, z ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     set_sdk_mode(client, false); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     poll_message(client, &msg); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if(msg.header.cmdid != SET_SDK_MODE_CMDID || msg.resp.sdkmode.retcode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         fprintf(stderr, "Could not disable SDK mode\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     SDL_Quit(); |  |  |  |     SDL_Quit(); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |