Exemple #1
0
int main()
{
   // Create the Xively context
   xi_context_t* xi_context = xi_create_context(XI_HTTP, DEVICE_KEY, FEED_ID);
   if(xi_context==NULL){
      perror("XIVELY: Problem in creating the context");
      return 1;
   }
   // Create the feed and clear its contents
   xi_feed_t feed;
   memset(&feed, 0, sizeof(xi_feed_t));
   // Set the properties of the feed (id, number of streams and datstream)
   feed.feed_id           = FEED_ID;
   feed.datastream_count  = 1;  //only sending a single stream, datastream 0
   // Get a reference to the datastream
   xi_datastream_t* data  = &feed.datastreams[0];
   // Only going to send a single data point in the stream
   data->datapoint_count = 1;
   // Set up the data stream identifier "tempSensor"
   int size = sizeof(data->datastream_id);
   xi_str_copy_untiln(data->datastream_id, size, "tempSensor", '\0' );
   // Set up the data point and setting a floating point value
   xi_datapoint_t* point = &data->datapoints[0];
   xi_set_value_f32(point, getTemperature(readAnalog(0)));
   // Update the feed
   xi_feed_update(xi_context, &feed);
   xi_delete_context(xi_context);
   return 0;
}
// NOTE - based on code example on StackOverflow: http://stackoverflow.com/questions/17661058/include-libraries-with-g/17700233#17700233
int GMXively::SendData(uint32_t feedID, const char *dataStreamID, float value)
{
	xi_context_t* xi_context;
	xi_feed_t feed;
	memset(&feed, NULL, sizeof(xi_feed_t));

	feed.feed_id = feedID;
	feed.datastream_count = 1;

	feed.datastreams[0].datapoint_count = 1;
	xi_datastream_t* datastream = &feed.datastreams[0];
	strcpy(datastream->datastream_id, dataStreamID);
	xi_datapoint_t* datapoint = &datastream->datapoints[0];

	try
	{
	
	    // create the xively library context
		xi_context  = xi_create_context(XI_HTTP, _apiKey, feed.feed_id);
	}
	catch (...)
	{
		GMUtils::Log("Exception creating context for feed %d, datastream %s", feedID, dataStreamID);
		return -1;
	}
	        // check if everything works
	if (xi_context == NULL)
	{
		return -1;
	}

	try
	{
		xi_set_value_f32(datapoint, value);
	}
	catch (...)
	{
		GMUtils::Log("Exception setting value for feed %d, datastream %s", feedID, dataStreamID);
		return -2;
	}
	
	try
	{
	
		const xi_response_t *result = xi_feed_update(xi_context, &feed);
		GMUtils::Debug("Sent %s = %.2f, result %s", dataStreamID, value, result->http.http_status_string);
	}
	catch (...)
	{
		GMUtils::Log("Exception sending to feed %d, datastream %s", feedID, dataStreamID);	
		return -3;
	}

	return 0;
}
Exemple #3
0
void test_datapoint_value_setters_and_getters(void* data)
{
    (void)(data);

    void * ret;

    xi_datapoint_t dp;

    ret = xi_set_value_i32( &dp, 320 );

    tt_assert( ret != 0 );

    tt_assert( xi_get_value_i32( &dp ) == 320 );

    tt_assert( xi_get_value_type( &dp ) == XI_VALUE_TYPE_I32 );

    tt_assert( xi_value_pointer_i32( &dp ) != 0 &&
               xi_value_pointer_f32( &dp ) == 0 &&
               xi_value_pointer_str( &dp ) == 0 );

    ret = xi_set_value_f32( &dp, (320.0/10) );

    tt_assert( ret != 0 );

    tt_assert( xi_get_value_f32( &dp ) == (320.0/10) );

    tt_assert( xi_get_value_type( &dp ) == XI_VALUE_TYPE_F32 );

    tt_assert( xi_value_pointer_i32( &dp ) == 0 &&
               xi_value_pointer_f32( &dp ) != 0 &&
               xi_value_pointer_str( &dp ) == 0 );

    ret = xi_set_value_str( &dp, "Let's test everything!" );

    tt_assert( ret != 0 );

    char s[XI_VALUE_STRING_MAX_SIZE+100];
    for (size_t i = 0; i < sizeof(s); i++) {
        s[i] = 'a';
    }

    ret = xi_set_value_str( &dp, s );

    tt_assert( ret != 0 )

    tt_assert( xi_get_value_type( &dp ) == XI_VALUE_TYPE_STR );

    tt_assert( xi_value_pointer_i32( &dp ) == 0 &&
               xi_value_pointer_f32( &dp ) == 0 &&
               xi_value_pointer_str( &dp ) != 0 );

    char * x = xi_value_pointer_str( &dp );

    tt_assert( strlen(s) > strlen(x) );
    tt_assert( strlen(x) == XI_VALUE_STRING_MAX_SIZE-1 );

    s[XI_VALUE_STRING_MAX_SIZE-5] = '\0';

    ret = xi_set_value_str( &dp, s );

    tt_assert( ret != 0 );

    tt_assert( strlen(s) == strlen(x) );
    tt_assert( strlen(x) == XI_VALUE_STRING_MAX_SIZE-5 );

end:
    ;
}