void sensor_notifier() { // Find the sensor server. int sensor_server_tid = -2; do { sensor_server_tid = WhoIs("SensorServer"); dlog("Sensor Server Tid %d\n", sensor_server_tid); } while (sensor_server_tid < 0); // Set up sensors. enable_sensor_reset(); // Delay a bit to read old data and then clear it. Delay(10); ReadClear(COM1); // Poll sensor data and forward it. SensorServerMessage msg; SensorServerMessage rply; msg.type = SENSOR_EVENT_REQUEST; char old_data[SENSOR_DATA_SIZE] = {0,0,0,0,0,0,0,0,0,0}; for(;;) { dump_sensors(); int i = 0; for (; i < SENSOR_DATA_SIZE; ++i) { char new_data = (char)Getc(COM1); msg.data[i] = new_data & ~old_data[i]; old_data[i] = new_data; } Send(sensor_server_tid, (char *)&msg, sizeof(msg), (char *)&rply, sizeof(rply)); dassert(rply.type == SENSOR_EVENT_RESPONSE, "Invalid Response from SensorServer"); } }
dev_test_state TDC_C0301::Test(void) { dev_test_state dt = dev_test_to_intermediate( Base::Test() ); if (dt!=DEV_TEST_OK) return dt; __u16 data; int rc = 0; for ( TDC_ch_t i=0; i<nCh; i++) rc |= ReadClear(i, &data); if (rc&CAMAC_CC_ERRORS) return dfcamac_rc2test(rc); return DEV_TEST_OK; }
byte* iFrogLabLoRaLibrary::Read16bytesBroadcast(){ m_Debug=1; ReadMode(); ReadClear(); //byte t2[16+1+3]; byte CRC = 0; byte readLen=0; // byte len=sizeof(iData) / sizeof(byte); // sizeof(iData); //(byte)(iStr.length()); //byte len1=len+1; //if(len==0) return; // 定義碼 byte t1[] = {0xc1,0x06,0x00,CRC}; CRC=Fun_CRC(t1,3); t1[3] = CRC; mySerial->write(t1,4); Fun_PrintArray(t1,4); if(m_Debug==1) Serial.print("Recive: "); /* for(int j=0;j<DeTimeout;j++){ if (mySerial->available()) { byte t1=mySerial->read(); if(m_Debug==1) { Serial.print(t1, HEX); Serial.print(","); } } } */ i=0; int k=0; for(int j=0;j<DeTimeout;j++){ if (mySerial->available()) { byte t1=mySerial->read(); if(m_Debug==1) { Serial.print(t1, HEX); Serial.print(","); } data[i]=t1; i=i+1; if(i>=2){ if(i>=3) { if(data[0]==0xc1 && data[1]==0x86){ int tlen=data[2]; /*Serial.print("("); Serial.print(tlen, HEX); Serial.print("-"); Serial.print(i, HEX); Serial.print(")");*/ if(i>=2+1+tlen+1){ for(int x=0;x<tlen;x++){ data2[x]=data[3+x]; } ReadClear(); return data2; } }else{ Serial.println(""); Serial.println("Error!"); ReadClear(); return; } } } } } Serial.println(""); Message_error(); }