コード例 #1
0
ファイル: RF22Router.cpp プロジェクト: SaeidYazdani/DevLibs
uint8_t RF22Router::sendtoWait(uint8_t* buf, uint8_t len, uint8_t dest)
{
    return sendtoWait(buf, len, dest, _thisAddress);
}
コード例 #2
0
ファイル: RF22Mesh.cpp プロジェクト: jeffminton/RF22
boolean RF22Mesh::get_address() {
    uint8_t ret, len = GLOBAL_BUFFER_SIZE, source, dest, new_address = 0;
    int temp_type = -1, temp_me = -1;
    char *json_str;
    unsigned long starttime;
    boolean recv_ret;
    aJsonObject *root, *item;

    randomSeed( analogRead( 1 ) );

    me = (uint8_t) random( 256 );

    #ifdef CLIENT
    Serial.println( F( "This is the client" ) );
    #endif

    while( new_address == 0 ) {

        root = aJson.createObject();
        aJson.addNumberToObject( root, F( "t" ), (uint8_t) ADDRESS_REQUEST );
        aJson.addNumberToObject( root, F( "m" ), (uint8_t) me );
        json_str = aJson.print( root );

        ret = sendtoWait( (uint8_t *) json_str, strlen( json_str ), RF22_BROADCAST_ADDRESS );

        if( ret != RF22_ROUTER_ERROR_NONE ) {
            Serial.print( F( "Error Code: " ) );
            Serial.println( ret );
            errno = ret;
            //return 0;
        }

        aJson.deleteItem( root );
        free( json_str );

        starttime = millis();

        for( int i = 0; i < 4 && new_address == 0; i++ ) {
            if( recvfromAckTimeout( global_msg_buffer, &len, 1000,  &source, &dest ) )
            {
                root = aJson.parse( (char *) global_msg_buffer );
                item = aJson.getObjectItem( root, F( "t" ) );
                if( item ) {
                    temp_type = item->valueint;
                }
                item = aJson.getObjectItem( root, F( "m" ) );
                if( item ) {
                    temp_me = item->valueint;
                }
                if( temp_type == ADDRESS_GRANT && temp_me == me ) 
                {
                    new_address = aJson.getObjectItem( root, F( "a" ) )->valueint;
                    setThisAddress( new_address );
                    server_address = source;
                    return 1;
                }
                aJson.deleteItem( root );
            }
        }
    }

    return 1;

}