/************************************************************************************************** * @fn sblInit * * @brief Boot Loader initialization. * * input parameters * * None. * * output parameters * * None. * * @return TRUE if there is a valid RC image; FALSE otherwise. */ uint8 sblInit(void) { aesLoadKey(); #if defined AES_TEST_VECS uint8 checkSig[KEY_BLENGTH] = { 0xB9, 0xD7, 0x89, 0x67, 0x04, 0xBC, 0xFA, 0x20, 0xB2, 0x10, 0x36, 0x74, 0x45, 0xF9, 0x83, 0xD6 }; imgHdr.len = 1; while (1) { aesSignature(testSig); if (memcmp(testSig, checkSig, KEY_BLENGTH)) // If signature generated is not value expected. { ASM_NOP; } } #else SBL_READ_IMG_HDR(); return checkRC(); #endif }
bool OpenNIWrapper::waitDepthUpdateAll() { XnStatus rc = XN_STATUS_OK; // Read a new frame rc = ni_context_.WaitOneUpdateAll(depth_generator_); if (!checkRC(rc, "Wait any update")) return false; return true; }
bool OpenNIWrapper::waitAnyUpdateAll() { XnStatus rc = XN_STATUS_OK; // Read a new frame rc = ni_context_.WaitAnyUpdateAll(); if (!checkRC(rc, "Wait any update")) return false; return true; }
bool OpenNIWrapper::initFromXmlFile(const XnChar* config_file) { XnStatus rc; xn::EnumerationErrors errors; rc = ni_context_.InitFromXmlFile(config_file, &errors); if (!checkErrors(rc, errors, "InitFromXmlFile")) return false; if (!checkRC(rc, "InitFromXmlFile")) return false; rc = ni_context_.FindExistingNode(XN_NODE_TYPE_DEPTH, depth_generator_); if (!checkRC(rc, "Find depth generator")) return false; depth_generator_.GetMetaData(depth_md_); depth_height_ = depth_md_.YRes(); depth_width_ = depth_md_.XRes(); fflush(stdout); return true; }
Temperature::Temperature(QObject *parent) : QObject(parent) { m_timer = new QTimer(this); connect(m_timer, SIGNAL(timeout()), this, SLOT(receiveTemperature())); const int mpu6050Address = 0x68; // MPU6050_ADDRESS (0x68) const int mpu6050RPM = 0x6b; //MPU6050_REG_DATA_START (0x6b) m_fd = wiringPiI2CSetup(mpu6050Address); if(checkRC()) { // Perform I2C work wiringPiI2CWriteReg8(m_fd, mpu6050RPM, 0); //qDebug()<<Q_FUNC_INFO<<m_fd; m_interval = 500; m_timer->start(m_interval); } }
/************************************************************************************************** * @fn sblProc * * @brief Process the SB command and received buffer. * * input parameters * * None. * * output parameters * * None. * * @return None. */ static void sblProc(void) { uint16 t16 = BUILD_UINT16(sbBuf[SBL_REQ_ADDR_LSB], sbBuf[SBL_REQ_ADDR_MSB]) + SBL_ADDR_BEG; uint8 len = 1, rsp = SBL_SUCCESS; switch (sbBuf[RPC_POS_CMD1]) { case SBL_WRITE_CMD: if ((t16 >= SBL_ADDR_BEG) && (t16 <= SBL_ADDR_END)) { if ((t16 % SBL_PAGE_LEN) == 0) { HalFlashErase(t16 / SBL_PAGE_LEN); } if (SBL_SECURE) { if (t16 == SBL_ADDR_IMG_HDR) { if (!imgHdrCheck(sbBuf + SBL_REQ_DAT0)) { rsp = SBL_FAILURE; break; } aesCrypt(1, sbBuf + SBL_REQ_DAT0); } else { aesCrypt(0, sbBuf + SBL_REQ_DAT0); } } SBL_NVM_SET(t16, (sbBuf + SBL_REQ_DAT0), SBL_RW_BUF_LEN); // Immediately read back what was written to keep the 'imgHdr' variable in sync with flash. if (t16 == SBL_ADDR_IMG_HDR) { SBL_READ_IMG_HDR(); } } else { rsp = SBL_FAILURE; } break; case SBL_READ_CMD: if ((t16 >= SBL_ADDR_BEG) && (t16 <= SBL_ADDR_END)) { len = SBL_RW_BUF_LEN + SBL_READ_HDR_LEN; sbBuf[SBL_RSP_ADDR_MSB] = sbBuf[SBL_REQ_ADDR_MSB]; sbBuf[SBL_RSP_ADDR_LSB] = sbBuf[SBL_REQ_ADDR_LSB]; SBL_NVM_GET(t16, (sbBuf + SBL_RSP_DAT0), SBL_RW_BUF_LEN); if (SBL_SECURE || (SBL_SIGNER && signMode)) { if (t16 == SBL_ADDR_IMG_HDR) { aesCrypt(1, sbBuf + SBL_RSP_DAT0); } else { aesCrypt(0, sbBuf + SBL_RSP_DAT0); } } } else { rsp = SBL_FAILURE; } break; case SBL_ENABLE_CMD: if (SBL_SIGNER) // A Signer must never enable the image for clean read back with crc[1]=0xFFFF. { signMode = FALSE; // PC Tool read back must be un-encrypted after downloading a new image. } else if (!SBL_SECURE) { imgHdr.crc[1] = imgHdr.crc[0]; imgHdr.crc[0] = 0xFFFF; SBL_NVM_SET(SBL_ADDR_CRC, imgHdr.crc, sizeof(imgHdr.crc)); SBL_READ_IMG_HDR(); } else if (!checkRC()) { rsp = SBL_VALIDATE_FAILED; } break; case SBL_HANDSHAKE_CMD: break; case SBL_SIGNATURE_CMD: len = ((rsp = procSignatureCmd((sbBuf + RPC_POS_DAT0 + 1))) == SBL_SUCCESS) ? 17 : 1; break; default: rsp = SBL_FAILURE; break; } sbBuf[RPC_POS_LEN] = len; sbBuf[RPC_POS_CMD1] |= SBL_RSP_MASK; sbBuf[RPC_POS_DAT0] = rsp; }