void memSettingsProcess(int command) { uint8_t memId; switch (command) { case CMD_GET_NBR: p.header = CRTP_HEADER(CRTP_PORT_MEM, SETTINGS_CH); p.size = 2; p.data[0] = CMD_GET_NBR; p.data[1] = nbrOwMems + NBR_EEPROM; crtpSendPacket(&p); break; case CMD_GET_INFO: memId = p.data[1]; p.header = CRTP_HEADER(CRTP_PORT_MEM, SETTINGS_CH); p.size = 2; p.data[0] = CMD_GET_INFO; p.data[1] = memId; // No error code if we fail, just send an empty packet back if (memId == EEPROM_ID) { // Memory type (eeprom) p.data[2] = MEM_TYPE_EEPROM; p.size += 1; // Size of the memory memSize = EEPROM_SIZE; memcpy(&p.data[3], &memSize, 4); p.size += 4; memcpy(&p.data[7], eepromSerialNum.data, 8); p.size += 8; } else { if (owGetinfo(memId - NBR_EEPROM, &serialNbr)) { // Memory type (1-wire) p.data[2] = MEM_TYPE_OW; p.size += 1; // Size of the memory TODO: Define length type memSize = OW_MAX_SIZE; memcpy(&p.data[3], &memSize, 4); p.size += 4; memcpy(&p.data[7], serialNbr.data, 8); p.size += 8; } } crtpSendPacket(&p); break; } }
bool owTest() { uint8_t nOwMem = 0; uint8_t nOwIter = 0; OwSerialNum sn; if (owScan(&nOwMem)) { DEBUG_PRINT("Found %d.\n", nOwMem); } else { DEBUG_PRINT("Scan [FAILED].\n"); } for (nOwIter = 0; nOwIter < nOwMem; nOwIter++) { if (owGetinfo(nOwIter, &sn)) { DEBUG_PRINT("Serial 0x%X %X %X %X %X %X %X %X.\n", sn.type, sn.id[0], sn.id[1], sn.id[2], sn.id[3], sn.id[4], sn.id[5], sn.crc); } else { DEBUG_PRINT("Mem:%d Getinfo [FAILED].\n", nOwIter); } } #ifdef OW_READ_TEST { static uint8_t testbuf[129]; if (owRead(0, 0, OW_MAX_SIZE, testbuf)) { for (nOwIter = 0; nOwIter < OW_MAX_SIZE; nOwIter++) { consolePrintf("%X ", testbuf[nOwIter]); testbuf[nOwIter] = nOwIter; } consolePrintf("\n"); } } #endif #ifdef OW_WRITE_TEST if (owWrite(0, 0, sizeof(bqData), bqData)) { DEBUG_PRINT("Write [OK].\n"); } else { DEBUG_PRINT("Write [FAIL].\n"); } // if (owWrite(1, 0, sizeof(dummyData2), dummyData2)) // { // DEBUG_PRINT("Write [OK].\n"); // } // else // { // DEBUG_PRINT("Write [FAIL].\n"); // } #endif return true; }