int initialize_camera() { struct termios camera_term; // Initialize serial to camera int tty = open("/dev/camera", O_RDWR | O_NOCTTY | O_NDELAY); tcgetattr(tty, &camera_term); cfmakeraw(&camera_term); camera_term.c_cflag = B115200; camera_term.c_cflag = CS8 | CREAD | CLOCAL; camera_term.c_iflag = IGNPAR | IGNBRK; tcflush(tty, TCOFLUSH); tcsetattr(tty,TCSANOW,&camera_term); //Set tracking settings char tc[] = "om 0 0\r"; //Suppress output from tracking char servo[] = "sm 5\r";//Set to pan servo active and pan servo report char color_track[] = "tc 144 194 37 87 0 41\r"; write(tty,&tc,sizeof(tc)); rx_ack(tty); write(tty,&servo,sizeof(servo)); rx_ack(tty); write(tty, &color_track,sizeof(color_track)); rx_ack(tty); return tty; }
//Turn on servo void start_tracking(int tty) { char servo[] = "so 0 1\r";//Turn on Servo write(tty,&servo,sizeof(servo)); rx_ack(tty); }
//Turn off servos void stop_tracking(int tty) { char servo[] = "so 0 0\r";//Turn off Servo write(tty,&servo,sizeof(servo)); rx_ack(tty); }
/** * The main function. */ int main( void ) { /* Stop the watchdog timer. */ WDTCTL = WDTPW + WDTHOLD; /* Setup MCLK 8MHz and SMCLK 1MHz */ set_mcu_speed_xt2_mclk_8MHz_smclk_1MHz(); /* Enable Interrupts */ eint(); LEDS_INIT(); LEDS_ON(); uart0_init(UART0_CONFIG_1MHZ_115200); printf("CC2420 TX test program with address recognition and acknowledge frames\r\n"); cc2420_init(); cc2420_io_sfd_register_cb(sfd_cb); cc2420_io_sfd_int_set_falling(); cc2420_io_sfd_int_clear(); cc2420_io_sfd_int_enable(); cc2420_set_txpower(CC2420_2_45GHz_TX_0dBm); uint8_t fcf[2] = {0x21, 0x88}; /* -> 00100001 10001000 -> reverse of bits for each byte -> 10000100 00010001 -> ack bit = 1 (6th bit), Frame type = 001 (don't forget to read from right to left) */ uint8_t seq_numb = 0x01; uint8_t dest_pan_id[2] = {0x22, 0x00}; uint8_t dest_addr[2] = {0x11, 0x11}; uint8_t src_pan_id[2] = {0x22, 0x01}; uint8_t src_addr[2] = {0x11, 0x12}; while ( (cc2420_get_status() & 0x40) == 0 ); // waiting for xosc being stable cc2420_set_panid(src_pan_id); // save pan id in ram cc2420_set_shortadr(src_addr); // save short address in ram printf("CC2420 initialized\r\n"); LEDS_OFF(); while (1) { cc2420_cmd_idle(); cc2420_cmd_flushtx(); txlength = sprintf((char *)txframe, "Hello World #%i", seq_numb); printf("Sent : %s of length %d\r\n", txframe,txlength); txlength += 13; cc2420_fifo_put(&txlength, 1); cc2420_fifo_put(fcf, 2); cc2420_fifo_put(&seq_numb, 1); cc2420_fifo_put(dest_pan_id, 2); cc2420_fifo_put(dest_addr, 2); cc2420_fifo_put(src_pan_id, 2); cc2420_fifo_put(src_addr, 2); cc2420_fifo_put(txframe, txlength-13); LED_BLUE_TOGGLE(); cc2420_cmd_tx(); micro_delay(0xFFFF); while (cc2420_io_sfd_read()); printf("Waiting for acknowledge frame...\n"); if (rx_ack()) { seq_numb ++; } else { printf("No Acknowledge frame received for frame number #%i - Retrying...\r\n\n", seq_numb); LED_RED_TOGGLE(); } micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); micro_delay(0xFFFF); } return 0; }