Diff for /gforth/engine/io-nxt.c between versions 1.7 and 1.10

version 1.7, 2007/04/24 20:18:57 version 1.10, 2007/06/17 19:26:43
Line 37 Line 37
 int terminal_prepped = 0;  int terminal_prepped = 0;
 int needs_update = 0;  int needs_update = 0;
 int bt_mode = 0;  int bt_mode = 0;
   int bt_state = 0;
   
 void  void
 show_splash(U32 milliseconds)  show_splash(U32 milliseconds)
 {  {
   display_clear(0);    display_clear(0);
   display_goto_xy(6, 6);    display_goto_xy(4, 6);
   display_string("Gforth");    display_string("Gforth NXT");
   display_update();    display_update();
   
   systick_wait_ms(milliseconds);    systick_wait_ms(milliseconds);
Line 66  void bt_send_cmd(char * cmd) Line 67  void bt_send_cmd(char * cmd)
   cmd[i++] = (char)(sum>>8);    cmd[i++] = (char)(sum>>8);
   cmd[i++] = (char)(sum & 0xff);    cmd[i++] = (char)(sum & 0xff);
   
     //  systick_wait_ms(500);
   
   bt_send(cmd, len+1);    bt_send(cmd, len+1);
 }  }
   
 void do_bluetooth ()  int do_bluetooth ()
 {  {
   if(!bt_mode) {    if(!bt_mode) {
     char cmd[30];      char cmd[30];
       
     bt_receive(cmd);      bt_receive(cmd);
     if(cmd[0] | cmd[1]) {      if(cmd[0] | cmd[1]) {
       display_char('0'+cmd[0]);        display_char('0'+cmd[0]);
       display_char('0'+cmd[1]);        display_char('0'+cmd[1]);
       display_update();  
     }      }
           
     switch(cmd[1]) {      switch(cmd[1]) {
     case 0x10:  
     case 0x16: // request connection      case 0x16: // request connection
         display_char('-');
       cmd[1] = 0x9; // accept connection        cmd[1] = 0x9; // accept connection
       cmd[2] = 1; // yes, we do        cmd[2] = 1; // yes, we do
       bt_send_cmd(cmd);        bt_send_cmd(cmd);
       break;        break;
       case 0x0f: // inquiry result
         display_char('+');
         cmd[1] = 0x05;
         bt_send_cmd(cmd); // add devices as known device
         break;
     case 0x13: // connect result      case 0x13: // connect result
       if(cmd[2]) {        if(cmd[2]) {
           int n=0;
         int handle=cmd[3];          int handle=cmd[3];
         cmd[1] = 0xB; // open stream          display_char('/'); display_update();
         cmd[2] = handle;          systick_wait_ms(300);
         bt_send_cmd(cmd);          bt_receive(cmd);
         while (*AT91C_US1_TNCR != 0);          if(cmd[0]==0) {
         // while(!(*AT91C_PIOA_PDSR & BT_BC4_CMD_PIN));            cmd[1] = 0xB; // open stream
         bt_set_arm7_cmd();            cmd[2] = handle;
         display_char(')'); display_update();            bt_send_cmd(cmd);
         bt_mode = 1;            systick_wait_ms(100);
         // bt_send("Hello Bluetooth\n", 16);            bt_set_arm7_cmd();
             bt_mode = 1;
             display_char(')'); display_update();
           }
           //        bt_state = 1;
       } else {        } else {
         display_char('('); display_update();          display_char('(');
       }        }
       break;        break;
   default:      case 0x20: // discoverableack
     break;        if(cmd[2]) {
           display_char('?');
           break;
         }
       case 0x10:
       case 0x14:
         display_char('!');
         cmd[1] = 0x1C; cmd[2] = 1; bt_send_cmd(cmd);
         break;
       default:
         break;
     }      }
       display_update();
   }    }
     return 0;
 }  }
   
 void prep_terminal ()  void prep_terminal ()
Line 123  void prep_terminal () Line 147  void prep_terminal ()
   nxt_motor_init();    nxt_motor_init();
   i2c_init();    i2c_init();
   bt_init();    bt_init();
     bt_start_ad_converter();
   do {    do {
     bt_receive(cmd);      bt_receive(cmd);
   } while((cmd[0] != 3) && (cmd[1] != 0x14));    } while((cmd[0] != 3) && (cmd[1] != 0x14));
   //  cmd[1] = 0x21; strcpy(cmd+2, "NXT"); bt_send_cmd(cmd); do_bluetooth();    //  cmd[1] = 0x36; // break stream mode
   cmd[1] = 0x1C; cmd[2] = 1; bt_send_cmd(cmd); do_bluetooth(); // make visible    //  cmd[2] = 0;
   cmd[1] = 0x36; cmd[2] = 1; bt_send_cmd(cmd); do_bluetooth(); // don't break stream mode    //  bt_send_cmd(cmd);
     //  cmd[1] = 0x1C; cmd[2] = 1; bt_send_cmd(cmd); // make visible
   cmd[1] = 0x03; bt_send_cmd(cmd); // open port query    cmd[1] = 0x03; bt_send_cmd(cmd); // open port query
   
   display_clear(1);    display_clear(1);
   show_splash(1000);    show_splash(1000);
   display_goto_xy(0,0);    display_goto_xy(0,0);
Line 147  long key_avail () Line 172  long key_avail ()
 {  {
   if(!terminal_prepped) prep_terminal();    if(!terminal_prepped) prep_terminal();
   
     do_bluetooth();
   if(bt_mode) {    if(bt_mode) {
     return bt_avail();      return bt_avail();
   } else {    } else {
     if(bt_avail())      systick_wait_ms(100);
       do_bluetooth();  
     return 0;      return 0;
   }    }
 }  }

Removed from v.1.7  
changed lines
  Added in v.1.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>