static int recv_idlist (CalcHandle* handle, uint8_t* id) { int ret; ret = nsp_session_open(handle, NSP_SID_DEV_INFOS); if (!ret) { ret = nsp_cmd_s_dev_infos(handle, NSP_CMD_DI_VERSION); if (!ret) { uint32_t size; uint8_t cmd, *data; ret = nsp_cmd_r_dev_infos(handle, &cmd, &size, &data); if (!ret) { strncpy((char *)id, (char*)(data + 82), 28); id[28] = 0; g_free(data); } } DO_CLOSE_SESSION(handle); } return ret; }
static int get_memfree (CalcHandle* handle, uint32_t* ram, uint32_t* flash) { uint32_t size; uint8_t cmd, *data; //int i; TRYF(nsp_session_open(handle, SID_DEV_INFOS)); TRYF(nsp_cmd_s_dev_infos(handle, CMD_DI_VERSION)); TRYF(nsp_cmd_r_dev_infos(handle, &cmd, &size, &data)); //i = 0; //*flash = (uint32_t)GUINT64_FROM_BE(*((uint64_t *)(data + i))); *flash = ( (((uint32_t)data[4]) << 24) | (((uint32_t)data[5]) << 16) | (((uint32_t)data[6]) << 8) | (((uint32_t)data[7]) )); //i = 16; //*ram = (uint32_t)GUINT64_FROM_BE(*((uint64_t *)(data + i))); *ram = ( (((uint32_t)data[20]) << 24) | (((uint32_t)data[21]) << 16) | (((uint32_t)data[22]) << 8) | (((uint32_t)data[23]) )); g_free(data); TRYF(nsp_session_close(handle)); return 0; }
static int recv_idlist (CalcHandle* handle, uint8_t* id) { uint32_t size; uint8_t cmd, *data; TRYF(nsp_session_open(handle, SID_DEV_INFOS)); TRYF(nsp_cmd_s_dev_infos(handle, CMD_DI_VERSION)); TRYF(nsp_cmd_r_dev_infos(handle, &cmd, &size, &data)); strncpy((char *)id, (char*)(data + 82), 28); g_free(data); TRYF(nsp_session_close(handle)); return 0; }
static int get_memfree (CalcHandle* handle, uint32_t* ram, uint32_t* flash) { int ret; ret = nsp_session_open(handle, NSP_SID_DEV_INFOS); if (!ret) { ret = nsp_cmd_s_dev_infos(handle, NSP_CMD_DI_VERSION); if (!ret) { uint32_t size; uint8_t cmd, *data; ret = nsp_cmd_r_dev_infos(handle, &cmd, &size, &data); if (!ret) { *flash = ( (((uint32_t)data[4]) << 24) | (((uint32_t)data[5]) << 16) | (((uint32_t)data[6]) << 8) | (((uint32_t)data[7]) )); *ram = ( (((uint32_t)data[20]) << 24) | (((uint32_t)data[21]) << 16) | (((uint32_t)data[22]) << 8) | (((uint32_t)data[23]) )); g_free(data); } } DO_CLOSE_SESSION(handle); } return ret; }
static int get_version (CalcHandle* handle, CalcInfos* infos) { int ret; ret = nsp_session_open(handle, NSP_SID_DEV_INFOS); if (ret) { return ret; } do { uint32_t size; uint8_t cmd, *data; ret = nsp_cmd_s_dev_infos(handle, NSP_CMD_DI_MODEL); if (ret) { break; } ret = nsp_cmd_r_dev_infos(handle, &cmd, &size, &data); if (ret) { break; } ticalcs_strlcpy(infos->product_name, (char *)data, sizeof(infos->product_name)); infos->mask = INFOS_PRODUCT_NAME; g_free(data); ret = nsp_cmd_s_dev_infos(handle, NSP_CMD_DI_VERSION); if (ret) { break; } ret = nsp_cmd_r_dev_infos(handle, &cmd, &size, &data); if (ret) { break; } infos->model = CALC_NSPIRE; infos->flash_free = ( (((uint64_t)data[ 0]) << 56) | (((uint64_t)data[ 1]) << 48) | (((uint64_t)data[ 2]) << 40) | (((uint64_t)data[ 3]) << 32) | (((uint64_t)data[ 4]) << 24) | (((uint64_t)data[ 5]) << 16) | (((uint64_t)data[ 6]) << 8) | (((uint64_t)data[ 7]) )); infos->mask |= INFOS_FLASH_FREE; infos->flash_phys = ( (((uint64_t)data[ 8]) << 56) | (((uint64_t)data[ 9]) << 48) | (((uint64_t)data[10]) << 40) | (((uint64_t)data[11]) << 32) | (((uint64_t)data[12]) << 24) | (((uint64_t)data[13]) << 16) | (((uint64_t)data[14]) << 8) | (((uint64_t)data[15]) )); infos->mask |= INFOS_FLASH_PHYS; infos->ram_free = ( (((uint64_t)data[16]) << 56) | (((uint64_t)data[17]) << 48) | (((uint64_t)data[18]) << 40) | (((uint64_t)data[19]) << 32) | (((uint64_t)data[20]) << 24) | (((uint64_t)data[21]) << 16) | (((uint64_t)data[22]) << 8) | (((uint64_t)data[23]) )); infos->mask |= INFOS_RAM_FREE; infos->ram_phys = ( (((uint64_t)data[24]) << 56) | (((uint64_t)data[25]) << 48) | (((uint64_t)data[26]) << 40) | (((uint64_t)data[27]) << 32) | (((uint64_t)data[28]) << 24) | (((uint64_t)data[29]) << 16) | (((uint64_t)data[30]) << 8) | (((uint64_t)data[31]) )); infos->mask |= INFOS_RAM_PHYS; infos->battery = (data[32] == 0x01) ? 0 : 1; infos->mask |= INFOS_BATTERY; infos->clock_speed = data[35]; infos->mask |= INFOS_CLOCK_SPEED; ticalcs_slprintf(infos->os_version, sizeof(infos->os_version), "%1i.%1i.%04i", data[36], data[37], (((int)data[38]) << 8) | data[39]); infos->mask |= INFOS_OS_VERSION; ticalcs_slprintf(infos->boot_version, sizeof(infos->boot_version), "%1i.%1i.%04i", data[40], data[41], (((int)data[42]) << 8) | data[43]); infos->mask |= INFOS_BOOT_VERSION; ticalcs_slprintf(infos->boot2_version, sizeof(infos->boot2_version), "%1i.%1i.%04i", data[44], data[45], (((int)data[46]) << 8) | data[47]); infos->mask |= INFOS_BOOT2_VERSION; infos->hw_version = ( (((uint32_t)data[48]) << 24) | (((uint32_t)data[49]) << 16) | (((uint32_t)data[50]) << 8) | (((uint32_t)data[51]) )); infos->mask |= INFOS_HW_VERSION; infos->run_level = data[53]; infos->mask |= INFOS_RUN_LEVEL; infos->lcd_width = ( (((uint16_t)data[58]) << 8) | (((uint16_t)data[59]) )); infos->mask |= INFOS_LCD_WIDTH; infos->lcd_height = ( (((uint16_t)data[60]) << 8) | (((uint16_t)data[61]) )); infos->mask |= INFOS_LCD_HEIGHT; infos->bits_per_pixel = data[62]; infos->mask |= INFOS_BPP; infos->device_type = data[64]; infos->mask |= INFOS_DEVICE_TYPE; memset(infos->main_calc_id, 0, sizeof(infos->main_calc_id)); strncpy(infos->main_calc_id, (char*)(data + 82), 28); infos->mask |= INFOS_MAIN_CALC_ID; memset(infos->product_id, 0, sizeof(infos->product_id)); strncpy(infos->product_id, (char*)(data + 82), 28); infos->mask |= INFOS_PRODUCT_ID; g_free(data); } while (0); DO_CLOSE_SESSION(handle); return ret; }
static int get_version (CalcHandle* handle, CalcInfos* infos) { uint32_t size; uint8_t cmd, *data; //int i; TRYF(nsp_session_open(handle, SID_DEV_INFOS)); TRYF(nsp_cmd_s_dev_infos(handle, CMD_DI_MODEL)); TRYF(nsp_cmd_r_dev_infos(handle, &cmd, &size, &data)); strcpy(infos->product_name, (char*)data); infos->mask |= INFOS_PRODUCT_NAME; TRYF(nsp_cmd_s_dev_infos(handle, CMD_DI_VERSION)); TRYF(nsp_cmd_r_dev_infos(handle, &cmd, &size, &data)); infos->model = CALC_NSPIRE; //i = 0; //infos->flash_free = GUINT64_FROM_BE(*((uint64_t *)(data + i))); infos->flash_free = ( (((uint64_t)data[ 0]) << 56) | (((uint64_t)data[ 1]) << 48) | (((uint64_t)data[ 2]) << 40) | (((uint64_t)data[ 3]) << 32) | (((uint64_t)data[ 4]) << 24) | (((uint64_t)data[ 5]) << 16) | (((uint64_t)data[ 6]) << 8) | (((uint64_t)data[ 7]) )); infos->mask |= INFOS_FLASH_FREE; //i = 8; //infos->flash_phys = GUINT64_FROM_BE(*((uint64_t *)(data + i))); infos->flash_phys = ( (((uint64_t)data[ 8]) << 56) | (((uint64_t)data[ 9]) << 48) | (((uint64_t)data[10]) << 40) | (((uint64_t)data[11]) << 32) | (((uint64_t)data[12]) << 24) | (((uint64_t)data[13]) << 16) | (((uint64_t)data[14]) << 8) | (((uint64_t)data[15]) )); infos->mask |= INFOS_FLASH_PHYS; //i = 16; //infos->ram_free = GUINT64_FROM_BE(*((uint64_t *)(data + i))); infos->ram_free = ( (((uint64_t)data[16]) << 56) | (((uint64_t)data[17]) << 48) | (((uint64_t)data[18]) << 40) | (((uint64_t)data[19]) << 32) | (((uint64_t)data[20]) << 24) | (((uint64_t)data[21]) << 16) | (((uint64_t)data[22]) << 8) | (((uint64_t)data[23]) )); infos->mask |= INFOS_RAM_FREE; //i = 24; //infos->ram_phys = GUINT64_FROM_BE(*((uint64_t *)(data + i))); infos->ram_phys = ( (((uint64_t)data[24]) << 56) | (((uint64_t)data[25]) << 48) | (((uint64_t)data[26]) << 40) | (((uint64_t)data[27]) << 32) | (((uint64_t)data[28]) << 24) | (((uint64_t)data[29]) << 16) | (((uint64_t)data[30]) << 8) | (((uint64_t)data[31]) )); infos->mask |= INFOS_RAM_PHYS; //i = 32; infos->battery = (data[32] == 0x01) ? 0 : 1; infos->mask |= INFOS_BATTERY; //i = 35; infos->clock_speed = data[35]; infos->mask |= INFOS_CLOCK_SPEED; //i = 36; g_snprintf(infos->os_version, sizeof(infos->os_version), "%1i.%1i.%04i", data[36], data[37], (data[38] << 8) | data[39]); infos->mask |= INFOS_OS_VERSION; //i = 40; g_snprintf(infos->boot_version, sizeof(infos->boot_version), "%1i.%1i.%04i", data[40], data[41], (data[42] << 8) | data[43]); infos->mask |= INFOS_BOOT_VERSION; //i = 44; g_snprintf(infos->boot2_version, sizeof(infos->boot2_version), "%1i.%1i.%04i", data[44], data[45], (data[46] << 8) | data[47]); infos->mask |= INFOS_BOOT2_VERSION; //i = 48; //infos->hw_version = GUINT32_FROM_BE(*((uint32_t *)(data + i))); infos->hw_version = ( (((uint32_t)data[48]) << 24) | (((uint32_t)data[49]) << 16) | (((uint32_t)data[50]) << 8) | (((uint32_t)data[51]) )); infos->mask |= INFOS_HW_VERSION; //i = 52; //infos->run_level = (uint8_t)GUINT16_FROM_BE(*((uint16_t *)(data + i))); infos->run_level = data[53]; infos->mask |= INFOS_RUN_LEVEL; //i = 58; //infos->lcd_width = GUINT16_FROM_BE(*((uint16_t *)(data + i))); infos->lcd_width = ( (((uint16_t)data[58]) << 8) | (((uint16_t)data[59]) )); infos->mask |= INFOS_LCD_WIDTH; //i = 60; //infos->lcd_height = GUINT16_FROM_BE(*((uint16_t *)(data + i))); infos->lcd_height = ( (((uint16_t)data[60]) << 8) | (((uint16_t)data[61]) )); infos->mask |= INFOS_LCD_HEIGHT; //i = 62; infos->bits_per_pixel = data[62]; infos->mask |= INFOS_BPP; //i = 64; infos->device_type = data[64]; infos->mask |= INFOS_DEVICE_TYPE; memset(infos->main_calc_id, 0, sizeof(infos->main_calc_id)); strncpy(infos->main_calc_id, (char*)(data + 82), 28); infos->mask |= INFOS_MAIN_CALC_ID; memset(infos->product_id, 0, sizeof(infos->product_id)); strncpy(infos->product_id, (char*)(data + 82), 28); infos->mask |= INFOS_PRODUCT_ID; g_free(data); TRYF(nsp_session_close(handle)); return 0; }