#define CAMCORDER_FILE "/usr/etc/mmfw_camcorder.ini"
#define CAMERA_COUNT_STR "DeviceCount"
+// define for correct difference of system feature vars
+#define val_diff(v_new, v_old) ((v_new < v_old) ? v_new : v_new - v_old)
+
enum PROCESS_DATA
{
PROCDATA_STAT,
get_network_stat(recv, send);
tmp = *recv;
- *recv = tmp - irecv_old;
+ *recv = val_diff(tmp, irecv_old);
irecv_old = tmp;
tmp = *send;
- *send = tmp - isend_old;
+ *send = val_diff(tmp, isend_old);
isend_old = tmp;
}
get_disk_stat(reads, sec_reads, writes, sec_writes);
tmp = *reads;
- *reads = tmp - reads_old;
+ *reads = val_diff(tmp, reads_old);
reads_old = tmp;
tmp = *writes;
- *writes = tmp - writes_old;
+ *writes = val_diff(tmp, writes_old);
writes_old = tmp;
tmp = *sec_reads;
- *sec_reads = tmp - sec_reads_old;
+ *sec_reads = val_diff(tmp, sec_reads_old);
sec_reads_old = tmp;
tmp = *sec_writes;
- *sec_writes = tmp - sec_writes_old;
+ *sec_writes = val_diff(tmp, sec_writes_old);
sec_writes_old = tmp;
}
case DEVICE_CPU:
cpu_new = swap_read_int64(cpu_idle/system) +
swap_read_int64(cpu_running/system);
- cpu_diff = cpu_new - cpu_old;
+ cpu_diff = val_diff(cpu_new, cpu_old);
cpu_old = cpu_new;
return (uint32_t)cpu_diff;
case DEVICE_FLASH:
flash_new = swap_read_int64(flash_read/system) +
swap_read_int64(flash_write/system);
- flash_diff = flash_new - flash_old;
+ flash_diff = val_diff(flash_new, flash_old);
flash_old = flash_new;
return (uint32_t)flash_diff;
case DEVICE_LCD:
lcd_new = get_system_lcd_energy();
- lcd_diff = lcd_new - lcd_old;
+ lcd_diff = val_diff(lcd_new, lcd_old);
lcd_old = lcd_new;
return (uint32_t)lcd_diff;
default:
switch (dev) {
case DEVICE_CPU:
cpu_new = swap_read_int64(cpu_running/apps);
- cpu_diff = cpu_new - cpu_old;
+ cpu_diff = val_diff(cpu_new, cpu_old);
cpu_old = cpu_new;
return (uint32_t)cpu_diff;
case DEVICE_FLASH:
flash_new = swap_read_int64(flash_read/apps) +
swap_read_int64(flash_write/apps);
- flash_diff = flash_new - flash_old;
+ flash_diff = val_diff(flash_new, flash_old);
flash_old = flash_new;
return (uint32_t)flash_diff;
case DEVICE_LCD: