// load the type_names void upkg::get_type(char *buf, int e, int d) { int i, j, index; signed long tmp; char *chtmp; index = 0; for (i = 0, j = strlen(export_desc[d].order); i < j; i++) { switch (export_desc[d].order[i]) { case UPKG_DATA_FCI: tmp = get_fci(&buf[index]); index += data_size; break; case UPKG_DATA_32: tmp = get_s32(&buf[index]); index += data_size; break; case UPKG_DATA_16: tmp = get_s16(&buf[index]); index += data_size; break; case UPKG_DATA_8: tmp = get_s8(&buf[index]); index += data_size; break; case UPKG_DATA_ASCIC: chtmp = get_string(&buf[index + 1], get_s8(&buf[index++])); index += data_size; break; case UPKG_DATA_ASCIZ: chtmp = get_string(&buf[index], UPKG_NAME_NOCOUNT); index += data_size; break; case UPKG_OBJ_JUNK: // do nothing!!! break; case UPKG_OBJ_NAME: exports[e].type_name = tmp; break; case UPKG_EXP_SIZE: // maybe we'll do something later on break; case UPKG_OBJ_SIZE: exports[e].object_size = tmp; break; default: exports[e].type_name = -1; return; } } exports[e].object_offset = exports[e].serial_offset + index; }
// load the name table void upkg::get_names(void) { int i, index; index = hdr->name_offset; for (i = 0; i < hdr->name_count; i++) { if (hdr->file_version >= 64) { get_string(&header[index + 1], get_s8(&header[index])); index++; } else { get_string(&header[index], UPKG_NAME_NOCOUNT); } index += data_size; strncpy(names[i].name, buf, UPKG_MAX_NAME_SIZE); names[i].flags = get_s32(&header[index]); index += data_size; } // hdr->name_count + 1 names total, this one's last strncpy(names[i].name, "(NULL)", UPKG_MAX_NAME_SIZE); names[i].flags = 0; }
static void read_raw_rssi_rsp(const void *data, uint8_t size) { uint8_t status = get_u8(data); uint16_t handle = get_le16(data + 1); int8_t rssi = get_s8(data + 3); print_status(status); print_handle(handle); print_rssi(rssi); }