float get_float(char* str, char** ss) { uint32_t u = get_uint32_t(str,ss); float* ret_val_ptr = (float*)&u; float ret_val = *ret_val_ptr; return(ret_val); }
void bcm2837_gpio_virt_init(void) { int i; for (i = 0 ; i < NUM_GPIO ; i++) { enables_disables[i] = 0; } gpiovirtbuf = get_uint32_t(); gpiovirtbuf &= 0x3FFFFFFF; }
int resource_from_network(dns_resource_t * resource, char * buff, int max_size, char* full_msg) { char * c = buff; int tmp; tmp = get_NAME_from_net(resource->NAME, buff, max_size, full_msg); if (tmp < 0) return -1; max_size -= tmp; buff += tmp; if(max_size < 2) return -1; resource->TYPE = get_uint16_t(buff); buff += 2; max_size -= 2; if(max_size < 2) return -1; resource->CLASS = get_uint16_t(buff); buff += 2; max_size -= 2; if(max_size < 4) return -1; resource->TTL = get_uint32_t(buff); buff += 4; max_size -= 4; if(max_size < 2) return -1; resource->RDLENGTH = get_uint16_t(buff); buff += 2; max_size -= 2; int i; if(resource->TYPE != TYPE_PTR) { for (i = 0; i < resource->RDLENGTH; ++i) { if(max_size == 0) return -1; resource->RDATA[i] = *buff; buff++; max_size--; } } else { get_NAME_from_net(resource->RDATA,buff, max_size, full_msg); buff += resource->RDLENGTH; } return buff - c; }
void pack_value(char* payload,int wlength,int offset, char* port_value) { char* ptr = payload + (offset*wlength/8); char* ss = NULL; switch(wlength) { case 8: *((uint8_t*)ptr) = get_uint8_t(port_value,&ss); break; case 16: *((uint16_t*)ptr) = get_uint16_t(port_value,&ss); break; case 32: *((uint32_t*)ptr) = get_uint32_t(port_value,&ss); break; case 64: *((uint64_t*)ptr) = get_uint64_t(port_value,&ss); break; default: fprintf(stderr,"Error: unsupported data width %d\n", wlength); return; } }