Store the clock calibration values in the device handle.
This commit is contained in:
parent
801f747345
commit
5cb754b01b
@ -22,6 +22,7 @@
|
|||||||
#include <string.h> // memcmp, memcpy
|
#include <string.h> // memcmp, memcpy
|
||||||
#include <stdlib.h> // malloc, free
|
#include <stdlib.h> // malloc, free
|
||||||
#include <assert.h> // assert
|
#include <assert.h> // assert
|
||||||
|
#include <time.h> // time
|
||||||
|
|
||||||
#include "device-private.h"
|
#include "device-private.h"
|
||||||
#include "reefnet_sensus.h"
|
#include "reefnet_sensus.h"
|
||||||
@ -48,6 +49,8 @@ struct reefnet_sensus_device_t {
|
|||||||
struct serial *port;
|
struct serial *port;
|
||||||
unsigned int waiting;
|
unsigned int waiting;
|
||||||
unsigned int timestamp;
|
unsigned int timestamp;
|
||||||
|
unsigned int devtime;
|
||||||
|
time_t systime;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_status_t reefnet_sensus_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
static device_status_t reefnet_sensus_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
||||||
@ -116,6 +119,8 @@ reefnet_sensus_device_open (device_t **out, const char* name)
|
|||||||
device->port = NULL;
|
device->port = NULL;
|
||||||
device->waiting = 0;
|
device->waiting = 0;
|
||||||
device->timestamp = 0;
|
device->timestamp = 0;
|
||||||
|
device->systime = (time_t) -1;
|
||||||
|
device->devtime = 0;
|
||||||
|
|
||||||
// Open the device.
|
// Open the device.
|
||||||
int rc = serial_open (&device->port, name);
|
int rc = serial_open (&device->port, name);
|
||||||
@ -265,6 +270,10 @@ reefnet_sensus_device_handshake (device_t *abstract, unsigned char *data, unsign
|
|||||||
array_uint32_le (handshake + 8));
|
array_uint32_le (handshake + 8));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Store the clock calibration values.
|
||||||
|
device->systime = time (NULL);
|
||||||
|
device->devtime = array_uint32_le (handshake + 8);
|
||||||
|
|
||||||
memcpy (data, handshake + 2, REEFNET_SENSUS_HANDSHAKE_SIZE);
|
memcpy (data, handshake + 2, REEFNET_SENSUS_HANDSHAKE_SIZE);
|
||||||
|
|
||||||
// Emit a device info event.
|
// Emit a device info event.
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <string.h> // memcmp, memcpy
|
#include <string.h> // memcmp, memcpy
|
||||||
#include <stdlib.h> // malloc, free
|
#include <stdlib.h> // malloc, free
|
||||||
|
#include <time.h> // time
|
||||||
|
|
||||||
#include "device-private.h"
|
#include "device-private.h"
|
||||||
#include "reefnet_sensuspro.h"
|
#include "reefnet_sensuspro.h"
|
||||||
@ -46,6 +47,8 @@ struct reefnet_sensuspro_device_t {
|
|||||||
device_t base;
|
device_t base;
|
||||||
struct serial *port;
|
struct serial *port;
|
||||||
unsigned int timestamp;
|
unsigned int timestamp;
|
||||||
|
unsigned int devtime;
|
||||||
|
time_t systime;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_status_t reefnet_sensuspro_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
static device_status_t reefnet_sensuspro_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
||||||
@ -95,6 +98,8 @@ reefnet_sensuspro_device_open (device_t **out, const char* name)
|
|||||||
// Set the default values.
|
// Set the default values.
|
||||||
device->port = NULL;
|
device->port = NULL;
|
||||||
device->timestamp = 0;
|
device->timestamp = 0;
|
||||||
|
device->systime = (time_t) -1;
|
||||||
|
device->devtime = 0;
|
||||||
|
|
||||||
// Open the device.
|
// Open the device.
|
||||||
int rc = serial_open (&device->port, name);
|
int rc = serial_open (&device->port, name);
|
||||||
@ -234,6 +239,10 @@ reefnet_sensuspro_device_handshake (device_t *abstract, unsigned char *data, uns
|
|||||||
array_uint32_le (handshake + 6));
|
array_uint32_le (handshake + 6));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Store the clock calibration values.
|
||||||
|
device->systime = time (NULL);
|
||||||
|
device->devtime = array_uint32_le (handshake + 6);
|
||||||
|
|
||||||
memcpy (data, handshake, REEFNET_SENSUSPRO_HANDSHAKE_SIZE);
|
memcpy (data, handshake, REEFNET_SENSUSPRO_HANDSHAKE_SIZE);
|
||||||
|
|
||||||
// Emit a device info event.
|
// Emit a device info event.
|
||||||
|
|||||||
@ -21,7 +21,8 @@
|
|||||||
|
|
||||||
#include <string.h> // memcmp, memcpy
|
#include <string.h> // memcmp, memcpy
|
||||||
#include <stdlib.h> // malloc, free
|
#include <stdlib.h> // malloc, free
|
||||||
#include <assert.h>
|
#include <assert.h> // assert
|
||||||
|
#include <time.h> // time
|
||||||
|
|
||||||
#include "device-private.h"
|
#include "device-private.h"
|
||||||
#include "reefnet_sensusultra.h"
|
#include "reefnet_sensusultra.h"
|
||||||
@ -51,6 +52,8 @@ struct reefnet_sensusultra_device_t {
|
|||||||
struct serial *port;
|
struct serial *port;
|
||||||
unsigned int maxretries;
|
unsigned int maxretries;
|
||||||
unsigned int timestamp;
|
unsigned int timestamp;
|
||||||
|
unsigned int devtime;
|
||||||
|
time_t systime;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_status_t reefnet_sensusultra_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
static device_status_t reefnet_sensusultra_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
||||||
@ -101,6 +104,8 @@ reefnet_sensusultra_device_open (device_t **out, const char* name)
|
|||||||
device->port = NULL;
|
device->port = NULL;
|
||||||
device->maxretries = 2;
|
device->maxretries = 2;
|
||||||
device->timestamp = 0;
|
device->timestamp = 0;
|
||||||
|
device->systime = (time_t) -1;
|
||||||
|
device->devtime = 0;
|
||||||
|
|
||||||
// Open the device.
|
// Open the device.
|
||||||
int rc = serial_open (&device->port, name);
|
int rc = serial_open (&device->port, name);
|
||||||
@ -350,6 +355,10 @@ reefnet_sensusultra_device_handshake (device_t *abstract, unsigned char *data, u
|
|||||||
array_uint16_le (handshake + 22));
|
array_uint16_le (handshake + 22));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Store the clock calibration values.
|
||||||
|
device->systime = time (NULL);
|
||||||
|
device->devtime = array_uint32_le (handshake + 4);
|
||||||
|
|
||||||
memcpy (data, handshake, REEFNET_SENSUSULTRA_HANDSHAKE_SIZE);
|
memcpy (data, handshake, REEFNET_SENSUSULTRA_HANDSHAKE_SIZE);
|
||||||
|
|
||||||
// Emit a device info event.
|
// Emit a device info event.
|
||||||
|
|||||||
@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
#include <stdlib.h> // malloc, free
|
#include <stdlib.h> // malloc, free
|
||||||
#include <memory.h> // memcpy
|
#include <memory.h> // memcpy
|
||||||
|
#include <time.h> // time
|
||||||
|
#include <assert.h> // assert
|
||||||
|
|
||||||
#include "device-private.h"
|
#include "device-private.h"
|
||||||
#include "uwatec_aladin.h"
|
#include "uwatec_aladin.h"
|
||||||
@ -53,6 +55,8 @@ struct uwatec_aladin_device_t {
|
|||||||
device_t base;
|
device_t base;
|
||||||
struct serial *port;
|
struct serial *port;
|
||||||
unsigned int timestamp;
|
unsigned int timestamp;
|
||||||
|
unsigned int devtime;
|
||||||
|
time_t systime;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_status_t uwatec_aladin_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
static device_status_t uwatec_aladin_device_set_fingerprint (device_t *abstract, const unsigned char data[], unsigned int size);
|
||||||
@ -101,6 +105,8 @@ uwatec_aladin_device_open (device_t **out, const char* name)
|
|||||||
// Set the default values.
|
// Set the default values.
|
||||||
device->port = NULL;
|
device->port = NULL;
|
||||||
device->timestamp = 0;
|
device->timestamp = 0;
|
||||||
|
device->systime = (time_t) -1;
|
||||||
|
device->devtime = 0;
|
||||||
|
|
||||||
// Open the device.
|
// Open the device.
|
||||||
int rc = serial_open (&device->port, name);
|
int rc = serial_open (&device->port, name);
|
||||||
@ -232,6 +238,9 @@ uwatec_aladin_device_dump (device_t *abstract, unsigned char data[], unsigned in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fetch the current system time.
|
||||||
|
time_t now = time (NULL);
|
||||||
|
|
||||||
// Update and emit a progress event.
|
// Update and emit a progress event.
|
||||||
progress.current += 4;
|
progress.current += 4;
|
||||||
device_event_emit (abstract, DEVICE_EVENT_PROGRESS, &progress);
|
device_event_emit (abstract, DEVICE_EVENT_PROGRESS, &progress);
|
||||||
@ -258,6 +267,10 @@ uwatec_aladin_device_dump (device_t *abstract, unsigned char data[], unsigned in
|
|||||||
return DEVICE_STATUS_PROTOCOL;
|
return DEVICE_STATUS_PROTOCOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Store the clock calibration values.
|
||||||
|
device->systime = now;
|
||||||
|
device->devtime = array_uint32_be (answer + HEADER + 0x7f8);
|
||||||
|
|
||||||
memcpy (data, answer, UWATEC_ALADIN_MEMORY_SIZE);
|
memcpy (data, answer, UWATEC_ALADIN_MEMORY_SIZE);
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
#include <string.h> // memcmp, memcpy
|
#include <string.h> // memcmp, memcpy
|
||||||
#include <stdlib.h> // malloc, free
|
#include <stdlib.h> // malloc, free
|
||||||
#include <assert.h> // assert
|
#include <assert.h> // assert
|
||||||
|
#include <time.h> // time
|
||||||
|
|
||||||
#include "device-private.h"
|
#include "device-private.h"
|
||||||
#include "uwatec_memomouse.h"
|
#include "uwatec_memomouse.h"
|
||||||
@ -49,6 +50,8 @@ struct uwatec_memomouse_device_t {
|
|||||||
device_t base;
|
device_t base;
|
||||||
struct serial *port;
|
struct serial *port;
|
||||||
unsigned int timestamp;
|
unsigned int timestamp;
|
||||||
|
unsigned int devtime;
|
||||||
|
time_t systime;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_status_t uwatec_memomouse_device_set_fingerprint (device_t *device, const unsigned char data[], unsigned int size);
|
static device_status_t uwatec_memomouse_device_set_fingerprint (device_t *device, const unsigned char data[], unsigned int size);
|
||||||
@ -97,6 +100,8 @@ uwatec_memomouse_device_open (device_t **out, const char* name)
|
|||||||
// Set the default values.
|
// Set the default values.
|
||||||
device->port = NULL;
|
device->port = NULL;
|
||||||
device->timestamp = 0;
|
device->timestamp = 0;
|
||||||
|
device->systime = (time_t) -1;
|
||||||
|
device->devtime = 0;
|
||||||
|
|
||||||
// Open the device.
|
// Open the device.
|
||||||
int rc = serial_open (&device->port, name);
|
int rc = serial_open (&device->port, name);
|
||||||
@ -473,8 +478,19 @@ uwatec_memomouse_dump (uwatec_memomouse_device_t *device, unsigned char *data[],
|
|||||||
serial_sleep (100);
|
serial_sleep (100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fetch the current system time.
|
||||||
|
time_t now = time (NULL);
|
||||||
|
|
||||||
// Read the data packet.
|
// Read the data packet.
|
||||||
return uwatec_memomouse_read_packet_inner (device, data, size, &progress);
|
rc = uwatec_memomouse_read_packet_inner (device, data, size, &progress);
|
||||||
|
if (rc != DEVICE_STATUS_SUCCESS)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
// Store the clock calibration values.
|
||||||
|
device->systime = now;
|
||||||
|
device->devtime = array_uint32_le (*data + 2 + 1);
|
||||||
|
|
||||||
|
return DEVICE_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -47,6 +47,8 @@ struct uwatec_smart_device_t {
|
|||||||
struct irda *socket;
|
struct irda *socket;
|
||||||
unsigned int address;
|
unsigned int address;
|
||||||
unsigned int timestamp;
|
unsigned int timestamp;
|
||||||
|
unsigned int devtime;
|
||||||
|
time_t systime;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_status_t uwatec_smart_device_set_fingerprint (device_t *device, const unsigned char data[], unsigned int size);
|
static device_status_t uwatec_smart_device_set_fingerprint (device_t *device, const unsigned char data[], unsigned int size);
|
||||||
@ -121,6 +123,8 @@ uwatec_smart_device_open (device_t **out)
|
|||||||
device->socket = NULL;
|
device->socket = NULL;
|
||||||
device->address = 0;
|
device->address = 0;
|
||||||
device->timestamp = 0;
|
device->timestamp = 0;
|
||||||
|
device->systime = (time_t) -1;
|
||||||
|
device->devtime = 0;
|
||||||
|
|
||||||
irda_init ();
|
irda_init ();
|
||||||
|
|
||||||
@ -394,6 +398,10 @@ uwatec_smart_dump (uwatec_smart_device_t *device, unsigned char *data[], unsigne
|
|||||||
unsigned int timestamp = array_uint32_le (answer);
|
unsigned int timestamp = array_uint32_le (answer);
|
||||||
message ("handshake: timestamp=0x%08x\n", timestamp);
|
message ("handshake: timestamp=0x%08x\n", timestamp);
|
||||||
|
|
||||||
|
// Store the clock calibration values.
|
||||||
|
device->systime = time (NULL);
|
||||||
|
device->devtime = timestamp;
|
||||||
|
|
||||||
// Update and emit a progress event.
|
// Update and emit a progress event.
|
||||||
progress.current += 9;
|
progress.current += 9;
|
||||||
device_event_emit (&device->base, DEVICE_EVENT_PROGRESS, &progress);
|
device_event_emit (&device->base, DEVICE_EVENT_PROGRESS, &progress);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user