int ds1216e_write_snapshot(rtc_ds1216e_t *context, snapshot_t *s) { DWORD latch_lo = 0; DWORD latch_hi = 0; DWORD offset_lo = 0; DWORD offset_hi = 0; DWORD old_offset_lo = 0; DWORD old_offset_hi = 0; snapshot_module_t *m; /* time_t can be either 32bit or 64bit, so we save as 64bit */ #if (SIZE_OF_TIME_T == 8) latch_hi = (DWORD)(context->latch >> 32); latch_lo = (DWORD)(context->latch & 0xffffffff); offset_hi = (DWORD)(context->offset >> 32); offset_lo = (DWORD)(context->offset & 0xffffffff); old_offset_hi = (DWORD)(context->old_offset >> 32); old_offset_lo = (DWORD)(context->old_offset & 0xffffffff); #else latch_lo = (DWORD)context->latch; offset_lo = (DWORD)context->offset; old_offset_lo = (DWORD)context->old_offset; #endif m = snapshot_module_create(s, snap_module_name, SNAP_MAJOR, SNAP_MINOR); if (m == NULL) { return -1; } if (0 || SMW_B(m, (BYTE)context->reset) < 0 || SMW_B(m, (BYTE)context->inactive) < 0 || SMW_B(m, (BYTE)context->hours12) < 0 || SMW_B(m, (BYTE)context->pattern_pos) < 0 || SMW_B(m, (BYTE)context->pattern_ignore) < 0 || SMW_B(m, (BYTE)context->output) < 0 || SMW_B(m, (BYTE)context->output_pos) < 0 || SMW_DW(m, latch_hi) < 0 || SMW_DW(m, latch_lo) < 0 || SMW_DW(m, offset_hi) < 0 || SMW_DW(m, offset_lo) < 0 || SMW_DW(m, old_offset_hi) < 0 || SMW_DW(m, old_offset_lo) < 0 || SMW_BA(m, context->clock_regs, DS1216E_REG_SIZE) < 0 || SMW_BA(m, context->old_clock_regs, DS1216E_REG_SIZE) < 0 || SMW_BA(m, context->clock_regs_changed, DS1216E_REG_SIZE) < 0 || SMW_STR(m, context->device) < 0) { snapshot_module_close(m); return -1; } return snapshot_module_close(m); }
int rtc72421_write_snapshot(rtc_72421_t *context, snapshot_t *s) { DWORD latch_lo = 0; DWORD latch_hi = 0; DWORD offset_lo = 0; DWORD offset_hi = 0; DWORD old_offset_lo = 0; DWORD old_offset_hi = 0; snapshot_module_t *m; /* time_t can be either 32bit or 64bit, so we save as 64bit */ #if (SIZE_OF_TIME_T == 8) latch_hi = (DWORD)(context->latch >> 32); latch_lo = (DWORD)(context->latch & 0xffffffff); offset_hi = (DWORD)(context->offset >> 32); offset_lo = (DWORD)(context->offset & 0xffffffff); old_offset_hi = (DWORD)(context->old_offset >> 32); old_offset_lo = (DWORD)(context->old_offset & 0xffffffff); #else latch_lo = (DWORD)context->latch; offset_lo = (DWORD)context->offset; old_offset_lo = (DWORD)context->old_offset; #endif m = snapshot_module_create(s, snap_module_name, SNAP_MAJOR, SNAP_MINOR); if (m == NULL) { return -1; } if (0 || SMW_B(m, (BYTE)context->stop) < 0 || SMW_B(m, (BYTE)context->hour24) < 0 || SMW_DW(m, latch_hi) < 0 || SMW_DW(m, latch_lo) < 0 || SMW_DW(m, offset_hi) < 0 || SMW_DW(m, offset_lo) < 0 || SMW_DW(m, old_offset_hi) < 0 || SMW_DW(m, old_offset_lo) < 0 || SMW_STR(m, context->device) < 0) { snapshot_module_close(m); return -1; } return snapshot_module_close(m); }