Example #1
0
/*! Make sure the string has at least 12 bytes available! */
char *
int32_to_dec_cstr(char s[],int32_t n) {
	if(n < 0) {
		s[0] = '-';
		uint32_to_dec_cstr(s+1, (uint32_t)-n);
		return s;
	}
	return uint32_to_dec_cstr(s, (uint32_t)n);
}
Example #2
0
smcp_status_t
smcp_outbound_set_var_content_unsigned_long_int(unsigned long int v) {
	smcp_outbound_add_option_uint(
		COAP_OPTION_CONTENT_TYPE,
		SMCP_CONTENT_TYPE_APPLICATION_FORM_URLENCODED
	);
#if SMCP_AVOID_PRINTF
{
		char nstr[12];
		smcp_outbound_append_content("v=", SMCP_CSTR_LEN);
		return smcp_outbound_append_content(uint32_to_dec_cstr(nstr,v), SMCP_CSTR_LEN);
	}
#else
	return smcp_outbound_set_content_formatted_const("v=%ul",v);
#endif
}
Example #3
0
smcp_status_t
plugtest_obs_handler(
	struct plugtest_server_s *self
) {
	smcp_status_t ret = SMCP_STATUS_NOT_ALLOWED;
	smcp_method_t method = smcp_inbound_get_code();

	if(method==COAP_METHOD_GET) {
		char* content = NULL;
		coap_size_t max_len = 0;

		ret = smcp_outbound_begin_response(COAP_RESULT_205_CONTENT);
		require_noerr(ret, bail);

		ret = smcp_outbound_add_option_uint(COAP_OPTION_CONTENT_TYPE, COAP_CONTENT_TYPE_TEXT_PLAIN);
		require_noerr(ret, bail);

		if(!smcp_timer_is_scheduled(smcp_get_current_instance(), &self->obs_timer))
			plugtest_obs_timer_callback(smcp_get_current_instance(),self);

		ret = smcp_observable_update(&self->observable,PLUGTEST_OBS_KEY);
		check_noerr(ret);

		ret = smcp_outbound_add_option_uint(COAP_OPTION_MAX_AGE,10);
		require_noerr(ret, bail);

		content = smcp_outbound_get_content_ptr(&max_len);
		require_action(content!=NULL, bail, ret = SMCP_STATUS_FAILURE);

		require_action(max_len>11, bail, ret = SMCP_STATUS_MESSAGE_TOO_BIG);

		ret = smcp_outbound_set_content_len(
			(coap_size_t)strlen(uint32_to_dec_cstr(content, (uint32_t)time(NULL)))
		);
		require_noerr(ret, bail);

		ret = smcp_outbound_send();
		require_noerr(ret, bail);
	}
bail:
	return ret;
}