/** * Reset all ports. */ void sp_init(void) { int i; for (i = 0; i < N_SENSORS; i++) sp_reset(i); }
void hs_disable(void) { // Turn off the device and make the pins available for other uses *AT91C_PMC_PCDR = (1 << AT91C_ID_US0); sp_reset(RS485_PORT); }
// Disable an I2C port void i2c_disable(int port) { if (port >= 0 && port < I2C_N_PORTS && i2c_ports[port]) { i2c_port *p = i2c_ports[port]; U32 pinmask = p->scl_pin | p->sda_pin; *AT91C_PIOA_ODR = pinmask; system_free((byte *)p); i2c_ports[port] = NULL; build_active_list(); sp_reset(port); } }
FUNCTION fw_reset() { sp_reset(); }
/****************************************************************************** * the test itself *****************************************************************************/ int main(int argc, char *argv[]) { char *dir = mktmpdir(); void *sp = kv_spoolwriter_new(dir); if (!sp) exit(-1); void *set = kv_set_new(); kv_adds(set, "hello", "again"); kv_adds(set, "second", "life"); kv_spool_write(sp,set); /* scan spool to validate expected file creation */ scan_spool(0); /* replace a value in the set, spool the set out. it should append * to the spool file previously created. */ printf("spooling second frame\n"); kv_adds(set, "second", "time"); kv_spool_write(sp,set); kv_spoolwriter_free(sp); /* verify spool has updated according to expectation */ scan_spool(0); printf("clear set\n"); kv_set_clear(set); /* loop over them */ kv_t *kv = NULL; while ( (kv = kv_next(set, kv))) { printf("key [%.*s], val [%.*s]\n", kv->klen, kv->key, kv->vlen, kv->val); } printf("reading from spool\n"); /* now try reading the spool */ sp = kv_spoolreader_new(dir); int rc; while ( (rc=kv_spool_read(sp, set, 0)) == 1) { printf("reader read frame:\n"); kv = NULL; while ( (kv = kv_next(set, kv))) { printf(" key [%.*s], val [%.*s]\n", kv->klen, kv->key, kv->vlen, kv->val); } } printf("kv_spool_read returned %d\n", rc); kv_spoolreader_free(sp); /* now reset it and read again */ printf("resetting the spool directory for another round of reading\n"); sp_reset(dir); sp = kv_spoolreader_new(dir); while ( (rc=kv_spool_read(sp, set, 0)) == 1) { printf("reader read frame:\n"); kv = NULL; while ( (kv = kv_next(set, kv))) { printf(" key [%.*s], val [%.*s]\n", kv->klen, kv->key, kv->vlen, kv->val); } } printf("kv_spool_read returned %d\n", rc); kv_spoolreader_free(sp); kv_set_free(set); scan_spool(1); return 0; }