Beispiel #1
0
int Handshake( void )
    {
     char test_char;
     int i;
     int master = 0;


     for( i = 0; i < 100; i++ ) /* Flush the buffer */
         Serial_Read( &test_char );

     delay( 1000 );

     if( Serial_Read( &test_char ) == -1 )
         {
          /* printf("We are the master \n"); */
          master = 1;

          while( Serial_Read( &test_char ) == -1 )
              {
               if( Jon_Kbhit() )  /* If user hits escape return error */
                   {
                    if( Jon_Getkey() == INDEX_ESC )
                       return -1;

                   }

               Serial_Write( '1' );
               delay( 500 );
              }

          for( i = 0; i < 100; i++ ) /* Flush the buffer */
              {
               delay(1);
               Serial_Read( &test_char );
              }
          delay( 500 );
         }
     else
         {
          /* printf("We are the slave \n");         */
          
          Serial_Write( '2' );
          
          for( i = 0; i < 100; i++ ) /* Flush the buffer */
              {
               delay(1);
               Serial_Read( &test_char );
              }
         }
    
     return master;
    
    }  /* End of Handshake() */
Beispiel #2
0
void WaitForChar(int *fd, char ch)
{
	char buffer[2];
	char c;
	buffer[1] = 0;
	
	do
	{
		Serial_Read(fd, buffer, 1);
		c = buffer[0];
	}while(c != ch);
}
Beispiel #3
0
void ZigBee::receive()
{
    if( (st_BufferIn.lengthData = (char)Serial_Read(st_BufferIn.Data, 95)) < 0) {// !! SA ASSURER QU'IL PEUT LIRE MOINS DE 95 OCTETS
        return;
    }

    if(st_BufferIn.lengthData == 0) {
        printf("HELLO\n");
        return;
    }
    bReadyToSend = true;
    decodeTrame();
}
Beispiel #4
0
size_t fread_serial(void *buffer, size_t size, size_t count, FILE *stream) {
    short bytes;
    size_t read = 0;
    // Don't get stuck waiting for a block to come in (buffer is 256 bytes)
    if (size > 256 || serial_ensureopen()) {
        IOERR(stream, EIO);
        return 0;
    }

    while (count-- > 0) {
        while (Serial_PollRX() < size);
        Serial_Read(buffer, size, &bytes);
        buffer += size;
        read++;
    }
    return read;
}
Beispiel #5
0
// Get the index LED, property
int SerialOsc_BlobPropertyGet( int property, uchar* blob, int maxSize )
{
    int xfer = 0;
    switch ( property )
    {
    case 0:
    {
        int length = Serial_GetReadable();
        xfer = ( length < maxSize ) ? length : maxSize;
        if ( xfer > 0 )
            Serial_Read( blob, xfer, 100 );
        break;
    }
    }

    return xfer;
}
Beispiel #6
0
bool ZigBee::ConfigZigBee()
{
    Serial_Send(param_ENTRE_CONFIG, 3);

    Serial_Read(cRecevBuff, 2);      //Reçoit la confirmation

    if(cRecevBuff[0] != 'o' || cRecevBuff[1] != 'k') {
        return false;               //Si pas de confirmation, on quite
    }

    Serial_Send(param_ADRESSE_EMET_H, 4);             //Demande l'adresse de l'émetteur (MSBs)

    Serial_Read(cRecevBuff, 4);

    printf("adresse du module : %X %X %X %X ",cRecevBuff[0],cRecevBuff[1],cRecevBuff[2],cRecevBuff[3]);

    Serial_Send(param_ADRESSE_EMET_L, 4);             //Demande l'adresse de l'émetteur (LSBs)

    Serial_Read(cRecevBuff, 4);

    printf("%X %X %X %X\n",cRecevBuff[0],cRecevBuff[1],cRecevBuff[2],cRecevBuff[3]);

    Serial_Send(param_ADRESSE_DEST_H, 4);             //Demande l'adresse du recepteur (MSBs)

    Serial_Read(cRecevBuff, 4);

    if(strncmp(cRecevBuff, HISTORY_DEST_H, 4) != 0) {
//        return false;
        //Si différente, on tape dedans...
    }

    Serial_Send(param_ADRESSE_DEST_L, 4);             //Demande l'adresse du recepteur (LSBs)

    Serial_Read(cRecevBuff, 4);

    if(strncmp(cRecevBuff, HISTORY_DEST_H, 4) != 0) {
//        return false;
        //Si différente, on tape dedans...
    }

    Serial_Send(param_QUITE_CONFIG, 4);             //Quite la Config

    Serial_Read(cRecevBuff, 2);      //Reçoit la confirmation

    if(cRecevBuff[0] != 'o' || cRecevBuff[1] != 'k') {
        return false;               //Si pas de confirmation, on quite
    }

    return true;
}
Beispiel #7
0
/* Get one character from the remote computer...if it takes long enough...
   return 0 */
int Get_One_Character( char *ch )
     {
      unsigned long starting_time;
      int error = 1; /* One means no error */


      starting_time = absolute_time;

      while( Serial_Read( ch ) == -1 )
          {
           /*
           if( absolute_time > (starting_time + NUM_CLICKS_TILL_DISCONNECT) )
               {
                error = 0;
                break;
               }
           */
          } /* End of while */

      return(error);
     
     } /* End of Get_One_Character() */
Beispiel #8
0
void ReadCode(char* code)
{
	int fd;
	int i;
	char ch;
	char buffer[2];
	buffer[1] = 0;
	i = 0;
	
	fflush(stdin);
	Serial_Open(&fd, "/dev/ttySP1", B9600);
	WaitForChar(&fd, '-');
	while(1)
			{
				Serial_Read(&fd, buffer, 1);			
				ch = buffer[0];
				if(ch == '\n')
					break;
				code[i++] = ch;
			}
	code[i-1] = 0;
	Serial_Close(&fd);

}