Changeset 438
- Timestamp:
- 02/18/07 18:32:04 (2 years ago)
- Files:
-
- trunk/projects/cmucam2/cmucam2.c (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/projects/cmucam2/cmucam2.c
r437 r438 68 68 GET_INPUT, 69 69 SET_TRACK, 70 BUF_MODE, 71 READ_FRAME, 70 72 CONF_HISTOGRAM, 71 73 CMUCAM2_CMD_END // Must be last entry so array sizes are correct … … 92 94 93 95 /* Buffer Commands */ 96 cmucam2_cmds[BUF_MODE] = "BM"; 94 97 // BM buffer mode 98 cmucam2_cmds[READ_FRAME] = "RF"; 95 99 // RF read frame 96 100 … … 176 180 177 181 static void cmucam2_get_histogram (cc3_histogram_pkt_t * h_pkt, 178 bool poll_mode, bool quiet);182 bool poll_mode, bool buf_mode, bool quiet); 179 183 static void cmucam2_get_mean (cc3_color_info_pkt_t * t_pkt, bool poll_mode, 180 bool line_mode, bool quiet);184 bool line_mode, bool buf_mode, bool quiet); 181 185 static void cmucam2_write_s_packet (cc3_color_info_pkt_t * pkt); 182 186 static void cmucam2_track_color (cc3_track_pkt_t * t_pkt, 183 187 bool poll_mode, 184 bool line_mode, bool auto_led, cmucam2_servo_t *servo_settings, bool quiet);188 bool line_mode, bool auto_led, cmucam2_servo_t *servo_settings,bool buf_mode, bool quiet); 185 189 static int32_t cmucam2_get_command (int32_t * cmd, int32_t * arg_list); 186 190 static void print_ACK (void); … … 197 201 int32_t val, n; 198 202 uint32_t arg_list[MAX_ARGS], start_time; 199 bool error, poll_mode, line_mode, auto_led, demo_mode ;203 bool error, poll_mode, line_mode, auto_led, demo_mode,buf_mode; 200 204 cc3_track_pkt_t t_pkt; 201 205 cc3_color_info_pkt_t s_pkt; … … 246 250 poll_mode = false; 247 251 line_mode = false; 252 buf_mode = false; 248 253 h_pkt.bins = 28; 249 254 t_pkt.track_invert = false; … … 322 327 break; 323 328 329 case READ_FRAME: 330 if (n != 0) { 331 error = true; 332 break; 333 } 334 print_ACK (); 335 cc3_pixbuf_load (); 336 break; 324 337 325 338 case GET_VERSION: … … 347 360 if (arg_list[0] == 2) 348 361 auto_led = true; 362 break; 363 364 case BUF_MODE: 365 if (n != 1 || arg_list[0]>1) { 366 error = true; 367 break; 368 } 369 370 print_ACK (); 371 if (arg_list[0] == 1) 372 buf_mode = true; 373 else 374 buf_mode = false; 349 375 break; 350 376 … … 584 610 t_pkt.upper_bound.channel[2] = arg_list[5]; 585 611 } 586 cmucam2_track_color (&t_pkt, poll_mode, line_mode,auto_led,&servo_settings, 0);612 cmucam2_track_color (&t_pkt, poll_mode, line_mode,auto_led,&servo_settings,buf_mode, 0); 587 613 break; 588 614 … … 606 632 cc3_pixbuf_set_roi (x0, y0, x1, y1); 607 633 // call get mean 608 cmucam2_get_mean (&s_pkt, 1, line_mode, 1);634 cmucam2_get_mean (&s_pkt, 1, line_mode,buf_mode, 1); 609 635 // set window back to full size 610 636 x0 = 0; … … 650 676 tmp = 240; 651 677 t_pkt.upper_bound.channel[2] = tmp; 652 cmucam2_track_color (&t_pkt, poll_mode, line_mode, auto_led,&servo_settings, 0);678 cmucam2_track_color (&t_pkt, poll_mode, line_mode, auto_led,&servo_settings,buf_mode, 0); 653 679 } 654 680 demo_mode = false; … … 663 689 664 690 print_ACK (); 665 cmucam2_get_mean (&s_pkt, poll_mode, line_mode, 0);691 cmucam2_get_mean (&s_pkt, poll_mode, line_mode,buf_mode, 0); 666 692 break; 667 693 … … 675 701 print_ACK (); 676 702 h_pkt.channel = arg_list[0]; 677 cmucam2_get_histogram (&h_pkt, poll_mode, 0);703 cmucam2_get_histogram (&h_pkt, poll_mode, buf_mode, 0); 678 704 break; 679 705 … … 794 820 795 821 796 void cmucam2_get_histogram (cc3_histogram_pkt_t * h_pkt, bool poll_mode, 822 void cmucam2_get_histogram (cc3_histogram_pkt_t * h_pkt, bool poll_mode, bool buf_mode, 797 823 bool quiet) 798 824 { … … 809 835 } 810 836 do { 811 cc3_pixbuf_load (); 837 if(!buf_mode) cc3_pixbuf_load (); 838 else cc3_pixbuf_rewind(); 812 839 if (cc3_histogram_scanline_start (h_pkt) != 0) { 813 840 while (cc3_pixbuf_read_rows (img.pix, 1)) { … … 840 867 841 868 void cmucam2_get_mean (cc3_color_info_pkt_t * s_pkt, 842 bool poll_mode, bool line_mode, bool quiet)869 bool poll_mode, bool line_mode,bool buf_mode, bool quiet) 843 870 { 844 871 cc3_image_t img; … … 848 875 img.pix = malloc (3 * img.width); 849 876 do { 850 cc3_pixbuf_load (); 877 if(!buf_mode) cc3_pixbuf_load (); 878 else cc3_pixbuf_rewind(); 851 879 if (cc3_color_info_scanline_start (s_pkt) != 0) { 852 880 while (cc3_pixbuf_read_rows (img.pix, 1)) { … … 873 901 void cmucam2_track_color (cc3_track_pkt_t * t_pkt, 874 902 bool poll_mode, 875 bool line_mode, bool auto_led,cmucam2_servo_t *servo_settings, bool quiet)903 bool line_mode, bool auto_led,cmucam2_servo_t *servo_settings,bool buf_mode, bool quiet) 876 904 { 877 905 cc3_image_t img; … … 891 919 892 920 do { 893 cc3_pixbuf_load (); 921 if(!buf_mode) cc3_pixbuf_load (); 922 else cc3_pixbuf_rewind(); 894 923 if (cc3_track_color_scanline_start (t_pkt) != 0) { 895 924 uint8_t lm_width, lm_height;
