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

version 1.7, 2007/04/24 20:18:57 version 1.9, 2007/06/16 20:47:00
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_state) {
     char cmd[30];      if(bt_get_mode()) {
         if(!bt_mode) {
     bt_receive(cmd);  
     if(cmd[0] | cmd[1]) {  
       display_char('0'+cmd[0]);  
       display_char('0'+cmd[1]);  
       display_update();  
     }  
       
     switch(cmd[1]) {  
     case 0x10:  
     case 0x16: // request connection  
       cmd[1] = 0x9; // accept connection  
       cmd[2] = 1; // yes, we do  
       bt_send_cmd(cmd);  
       break;  
     case 0x13: // connect result  
       if(cmd[2]) {  
         int handle=cmd[3];  
         cmd[1] = 0xB; // open stream  
         cmd[2] = handle;  
         bt_send_cmd(cmd);  
         while (*AT91C_US1_TNCR != 0);  
         // while(!(*AT91C_PIOA_PDSR & BT_BC4_CMD_PIN));  
         bt_set_arm7_cmd();          bt_set_arm7_cmd();
         display_char(')'); display_update();          display_char(')'); display_update();
         bt_mode = 1;          bt_mode = 1;
         // bt_send("Hello Bluetooth\n", 16);        }
         return 1;
       } else {
         if(bt_mode) {
           bt_clear_arm7_cmd();
           display_char('['); display_update();
           bt_mode = 0;
           bt_state = 0;
       } else {        } else {
         display_char('('); display_update();          display_char('.');
           display_update();
       }        }
       break;      }
   default:    } else {
     break;      if(!bt_mode) {
         char cmd[30];
         
         bt_receive(cmd);
         if(cmd[0] | cmd[1]) {
           display_char('0'+cmd[0]);
           display_char('0'+cmd[1]);
         }
         
         switch(cmd[1]) {
         case 0x10:
         case 0x16: // request connection
           display_char('-');
           cmd[1] = 0x9; // accept connection
           cmd[2] = 1; // yes, we do
           bt_send_cmd(cmd);
           break;
         case 0x0f: // inquiry result
           cmd[1] = 0x05;
           bt_send_cmd(cmd); // add devices as known device
           break;
         case 0x13: // connect result
           if(cmd[2]) {
             display_char('/');
             int handle=cmd[3];
             cmd[1] = 0xB; // open stream
             cmd[2] = handle;
             bt_send_cmd(cmd);
             bt_state = 1;
           } else {
             display_char('(');
           }
           break;
         case 0x20: // discoverableack
           if(cmd[2]) {
             display_char('?');
             cmd[1] = 0x03; bt_send_cmd(cmd); // open port query
             break;
           }
         case 0x14:
           display_char('!');
           cmd[1] = 0x1C; cmd[2] = 1; bt_send_cmd(cmd);
           break;
         default:
           break;
         }
         {
           extern int display_x, display_y;
           static int n=0;
           int x = display_x;
           int y = display_y;
           display_goto_xy(0,6);
           display_char("/|\\-"[(n++)&3]);
           display_goto_xy(x,y);
         }
         display_update();
     }      }
   }    }
     return 0;
 }  }
   
 void prep_terminal ()  void prep_terminal ()
Line 126  void prep_terminal () Line 171  void prep_terminal ()
   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] = 0x03; bt_send_cmd(cmd); // open port query    cmd[1] = 0x1C; cmd[2] = 1; bt_send_cmd(cmd); // make visible
   
   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 191  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.9


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