36 #include <arpa/inet.h>
39 #define MAGIC ((int32_t) 0xEDA1DA01L)
41 static inline int fread32(FILE *f, int32_t *v32)
44 if (fread(&v, 4, 1, f) != 1)
50 static inline int fread64(FILE *f, int64_t *v64)
57 *v64 = (((int64_t) v1)<<32) | (((int64_t) v2)&0xffffffff);
63 if(strcmp(mode,
"r"))
return NULL;
65 l->
f = fopen(path, mode);
90 magic = (magic << 8) | r;
91 }
while( magic !=
MAGIC );
134 magic = (magic << 8) | r;
135 }
while( magic !=
MAGIC );
139 if (0 !=
fread64(l->
f, &event_num))
return -1;
140 if (0 !=
fread64(l->
f, ×tamp))
return -1;
141 fseeko (l->
f, -20, SEEK_CUR);
153 fseeko (l->
f, 0, SEEK_END);
154 off_t file_len = ftello(l->
f);
159 double prev_frac = -1;
163 frac = 0.5*(frac1+frac2);
164 off_t offset = (off_t)(frac*file_len);
165 fseeko (l->
f, offset, SEEK_SET);
170 frac = (double)ftello (l->
f)/file_len;
171 if ((frac > frac2) || (frac < frac1) || (frac1>=frac2))
174 double df = frac-prev_frac;
180 if (cur_time == timestamp)
183 if (cur_time < timestamp)
lcm_eventlog_event_t * lcm_eventlog_read_next_event(lcm_eventlog_t *l)
int lcm_eventlog_seek_to_timestamp(lcm_eventlog_t *l, int64_t timestamp)
void lcm_eventlog_destroy(lcm_eventlog_t *l)
header file for eventlog.cpp Check the LCM instructions for more info
static int fread64(FILE *f, int64_t *v64)
void lcm_eventlog_free_event(lcm_eventlog_event_t *le)
lcm_eventlog_t * lcm_eventlog_create(const char *path, const char *mode)
static int64_t get_event_time(lcm_eventlog_t *l)
static int fread32(FILE *f, int32_t *v32)