Ejemplo n.º 1
0
void APSPthread::pthreadTask() {
    setrunning(true);
    if (_isLoop) {
        while (true) {
            _task();
            pthread_testcancel();
        }
    } else {
        _task();
    }
    setrunning(false);
}
boolean VC0706::setMotionDetect(boolean flag) 
{
    if (! setMotionStatus(VC0706_MOTIONCONTROL, VC0706_UARTMOTION, VC0706_ACTIVATEMOTION))
        return false;
    uint8_t cmd[] = {VC0706_COMM_MOTION_CTRL, 0x01, flag};
    _task(cmd, sizeof(cmd), 5);
}
uint8_t VC0706::getImageSize(void) 
{
    uint8_t cmd[] = {VC0706_READ_DATA, 0x04, 0x04, 0x01, 0x00, 0x19};
    if (!_task(cmd, sizeof(cmd), 6))
        return -1;
    return vcBuff[5];
}
boolean VC0706::getMotionDetect(void) 
{
    uint8_t cmd[] = {VC0706_COMM_MOTION_STATUS, 0x00};
    if (! _task(cmd, sizeof(cmd), 5))
        return false;
    return vcBuff[5];
}
uint8_t VC0706::getDownsize(void) 
{
    uint8_t cmd[] = {VC0706_DOWNSIZE_STATUS, 0x0};
    if (! _task(cmd, sizeof(cmd), 6)) 
        return -1;
    return vcBuff[5];
}
Ejemplo n.º 6
0
void Thread::_thread_func() {
    t_thread_info = make_shared_ref<ThreadInfo>(std::this_thread::get_id(), _name);

    _logger.info() << get_own_info() << " spawned.";

    GUM_TRY_LEVEL("Uncaught exception from client thread function", LogLevel::Error, _task(_cancellation_token));
}
uint8_t* VC0706::readPicture(uint8_t length)
{
#if TRANSFER_BY_SPI
	digitalWrite(SLAVE_PIN, LOW);
	bufferLen = 0;
	uint8_t tmp = SPI.transfer(0);
	while(bufferLen < length){
		vcBuff[bufferLen++] = SPI.transfer(0);
	}
	digitalWrite(SLAVE_PIN, HIGH);
	return vcBuff;
#else // transfer by serial
    uint8_t cmd[] = {VC0706_READ_FBUF, 0x0C, 0x0, 0x0A, 0, 0, framePosition >> 8, 
                     framePosition & 0xFF, 0, 0, 0, length, CAMERADELAY >> 8, CAMERADELAY & 0xFF};
                     
    if (!_task(cmd, sizeof(cmd), 5, DEFAULT_TIMEOUT/4, false))
        return 0;

    if (_read(length+5, CAMERADELAY) == 0) 
        return 0;
        
    framePosition += length;
    return vcBuff;
#endif
}
uint32_t VC0706::getFrameLength(void) 
{
    uint8_t cmd[] = {VC0706_GET_FBUF_LEN, 0x01, 0x00};
    if (!_task(cmd, sizeof(cmd), 9))
        return 0;
    uint32_t length = (vcBuff[5]<<24)|(vcBuff[6]<<16)|(vcBuff[7]<<8)|vcBuff[8];
    return length;
}
Ejemplo n.º 9
0
void timer_task::task_handler(const boost::system::error_code& e)
{
    if (!e) {
        _task();
        _timer.expires_from_now(boost::posix_time::milliseconds(_period));
        _timer.async_wait(boost::bind(&timer_task::task_handler, this, boost::asio::placeholders::error));
    }
}
Ejemplo n.º 10
0
bool Thread::_run()
{
    if (!_task) {
        return false;
    }

    _task();

    return true;
}
Ejemplo n.º 11
0
bool the::timed_task::invoke(float dt)
{
    _current += dt;
    if(_current >= _delay)
    {
        _current = 0;
        _task();
        return !_looped;
    }
    return false;
}
Ejemplo n.º 12
0
bool PeriodicThread::_run()
{
    uint64_t next_run_usec = AP_HAL::micros64() + _period_usec;

    while (true) {
        uint64_t dt = next_run_usec - AP_HAL::micros64();
        if (dt > _period_usec) {
            // we've lost sync - restart
            next_run_usec = AP_HAL::micros64();
        } else {
            Scheduler::from(hal.scheduler)->microsleep(dt);
        }
        next_run_usec += _period_usec;

        _task();
    }

    return true;
}
boolean VC0706::resetBaudrate(VC0706_BaudRate rate)
{
    uint8_t S1RELH;
    uint8_t S1RELL;
    
    switch (rate){
        case BaudRate_9600:
            S1RELH = 0xAE;
            S1RELL = 0xC8;
			baud = 9600;
            break;
        case BaudRate_19200:
            S1RELH = 0x56;
            S1RELL = 0xE4;
			baud = 19200;
            break;
        case BaudRate_38400:
            S1RELH = 0x2A;
            S1RELL = 0xF2;
			baud = 38400;
            break;
        case BaudRate_57600:
            S1RELH = 0x1C;
            S1RELL = 0x4C;
			baud = 57600;
            break;
        case BaudRate_115200:
            S1RELH = 0x0D;
            S1RELL = 0xA6;
			baud = 115200;
            break;
        default : //19200
            S1RELH = 0x56;
            S1RELL = 0xE4;
			baud = 19200;
            break;  
    }
    uint8_t cmd[] = {VC0706_SET_PORT,0x03,0x01,S1RELH,S1RELL};
    return _task(cmd, sizeof(cmd), 5);
}
boolean VC0706::resumeVideo(void) 
{
    uint8_t cmd[] = {VC0706_FBUF_CTRL, 0x01, VC0706_RESUMEFRAME};
    return _task(cmd, sizeof(cmd), 5);
}
Ejemplo n.º 15
0
 double operator()(std::size_t node_id)
 {
     return _task(*_msh.getNode(node_id));
 }
boolean VC0706::enableTVOutput(bool enable) 
{
    uint8_t cmd[] = {VC0706_TV_OUT_CTRL, 0x01, enable};
    return _task(cmd, sizeof(cmd), 5);
}
boolean VC0706::setDownsize(uint8_t size) 
{
    uint8_t cmd[] = {VC0706_DOWNSIZE_CTRL, 0x01, size};
    return _task(cmd, sizeof(cmd), 5);
}
boolean VC0706::resetSystem(void) 
{
    uint8_t cmd[] = {VC0706_SYSTEM_RESET, 0x00};//0x56+0x00+0x26+0x00
    return _task(cmd, sizeof(cmd), 5);//0x76+0x00+0x26+0x00+0x00 
}
boolean VC0706::setImageSize(uint8_t size) 
{
    uint8_t cmd[] = {VC0706_WRITE_DATA, 0x05, 0x04, 0x01, 0x00, 0x19, size};
    return _task(cmd, sizeof(cmd), 5);
}
uint8_t VC0706::getMotionStatus(uint8_t x) 
{
    uint8_t cmd[] = {VC0706_MOTION_STATUS, 0x01, x};
    return _task(cmd, sizeof(cmd), 5);
}
uint8_t VC0706::setMotionStatus(uint8_t x, uint8_t d1, uint8_t d2) 
{
    uint8_t cmd[] = {VC0706_MOTION_CTRL, 0x03, x, d1, d2};
    return _task(cmd, sizeof(cmd), 5);
}
boolean VC0706::takePicture(void) 
{
    uint8_t cmd[] = {VC0706_FBUF_CTRL, 0x01, VC0706_STOPCURRENTFRAME};
    framePosition = 0;
    return _task(cmd, sizeof(cmd), 5);
}