+int owDeviceDS2450::readMemory(int page,int start, int count,std::vector<uint8_t> *data) {\r
+ std::vector<uint8_t> cl;\r
+ cl.push_back(0xAA);\r
+ cl.push_back(page*8+start);\r
+ cl.push_back(0x00);\r
+ Communicate(&cl,3,10-start);\r
+ if (owi->log->last()>=OWLOG_WARNING) {\r
+ return 0;\r
+ }\r
+ if (!owi->testCRC16(cl)) {\r
+ for (uint8_t v :cl) printf("%02X ",v);\r
+ printf("\n");\r
+ owi->log->set(OWLOG_ERROR,"CRC ERROR Reading Memory of DS2450");\r
+ return 0;\r
+ }\r
+ data->clear();\r
+ data->insert(data->begin(),cl.begin()+3,cl.end()-2);\r
+ return count;\r
+}\r
+int owDeviceDS2450::writeMemory(int page,int start, int count,std::vector<uint8_t> *data) {\r
+ std::vector<uint8_t> cl;\r
+ cl.push_back(0x55);\r
+ cl.push_back(page*8+start);\r
+ cl.push_back(0x00);\r
+ owi->MatchRom(snum);\r
+ if (owi->log->last()>=OWLOG_WARNING) {\r
+ return 0;\r
+ }\r
+ int i=0;\r
+ for(uint8_t b: (*data)) {\r
+ cl.push_back(b);\r
+ owi->Communicate(&cl,cl.size(),2);\r
+ if (owi->log->last()>=OWLOG_WARNING) {\r
+ return 0;\r
+ }\r
+ if (i>0) {\r
+ if (!owi->testCRC16(cl,i+page*8+start)) {\r
+ owi->log->set(OWLOG_ERROR,"CRC ERROR Writing Memory of DS2450");\r
+ return 0;\r
+ }\r
+ } else {\r
+ if (!owi->testCRC16(cl)) {\r
+ owi->log->set(OWLOG_ERROR,"CRC ERROR Writing Memory of DS2450");\r
+ return 0;\r
+ }\r
+ }\r
+ cl.clear();\r
+ owi->Communicate(&cl, 0, 1);\r
+ if (owi->log->last()>=OWLOG_WARNING) {\r
+ return 0;\r
+ }\r
+ if (cl[0] != b) {\r
+ owi->log->set(OWLOG_ERROR,"ERROR Writing Memory of DS2450");\r
+ return 0;\r
+ }\r
+ cl.clear();\r
+ i++;\r
+ }\r
+ return count;\r
+}\r
+\r
+\r
+void owDeviceDS2450::readMemory_int(uint8_t addr,std::vector<uint8_t> *sp) {\r