Exemple #1
0
/*
 * Need to Update Data?
 * if USE_DMP is defined: check whether flag was set by ISR of DMP Interrupt
 * else: check whether flag was set by ISR of AXI Timer Interrupt
 */
bool needToUpdateData() {
    //Variables
    bool update;

    //Check if data should be updated
#ifdef USE_DMP
    update = dmpDataAvailable();
#else
    update = isTimerExpired();
#endif

    //Return
    return update;
}
Exemple #2
0
/*
 * Timer Test
 */
int timerTest(u32 int_freq) {
	//Variables
	int status;

	//Init Timer
	status = initTmrInt(int_freq);
	if (status != XST_SUCCESS) {
		myprintf("timer_int.c Could not initialize AXI Timer.\r\n");
	}

	while (1) {
		if (isTimerExpired() == BOOL_TRUE) {
			toggleLed(INT_MASK);
		}
	}

	//Return
	return status;
}
IoT_Error_t iot_tls_read(Network *pNetwork, unsigned char *pMsg, size_t len, Timer *pTimer, size_t *read_len) {
    IOT_UNUSED(pNetwork);
    IOT_UNUSED(pTimer);

    if(RxIndex > TLSMaxBufferSize - 1) {
        RxIndex = TLSMaxBufferSize - 1;
    }

    if(RxBuffer.len <= RxIndex || !isTimerExpired(RxBuffer.expiry_time)) {
        return NETWORK_SSL_NOTHING_TO_READ;
    }

    if((false == RxBuffer.NoMsgFlag) && (RxIndex < RxBuffer.len)) {
        memcpy(pMsg, &(RxBuffer.pBuffer[RxIndex]), len);
        RxIndex += len;
        *read_len = len;
    }

    return SUCCESS;
}
Exemple #4
0
int TalkThread::onUpdate() {

	TalkEntry *talkEntry;

	switch (_status) {

	case 1:
		if (isTimerExpired(_voiceStartTime, _voiceEndTime)) {
			if (_vm->checkActiveTalkThreads())
				_status = 2;
			else
				_status = 3;
		}
		return kTSYield;

	case 2:
		if (_vm->checkActiveTalkThreads())
			return kTSYield;
		_status = 3;
		// fall through

	case 3:
		talkEntry = getTalkResourceEntry(_talkId);
		_flags = 0;
		_currEntryText = 0;
		_entryText = talkEntry->_text;
		_entryTblPtr = talkEntry->_tblPtr;
		if (_sequenceId1) {
			_pauseCtr = 0;
		} else {
			_flags |= 2;
			_flags |= 1;
		}
		if (_vm->isSoundActive()) {
			if (!_vm->_soundMan->cueVoice((char*)talkEntry->_voiceName) && !_durationMult)
				_durationMult = _defDurationMult;
		} else {
			_flags |= 4;
			if (_durationMult == 0)
				_durationMult = _defDurationMult;
		}
		if (_objectId == 0 || _durationMult == 0)
			_flags |= 8;
		_status = 4;
		// fall through

	case 4:
		if (!(_flags & 4) && !_vm->_soundMan->isVoiceCued())
			return kTSYield;
		_status = 5;
		// fall through

	case 5:
		if (!(_flags & 8))
			refreshText();
		if (!(_flags & 2)) {
			Control *control = _vm->_dict->getObjectControl(_objectId);
			control->startTalkActor(_sequenceId1, _entryTblPtr, _threadId);
		}
		if (!(_flags & 4)) {
			int16 panX = 0;
			if (_namedPointId) {
				Common::Point pt = _vm->getNamedPointPosition(_namedPointId);
				panX = _vm->convertPanXCoord(pt.x);
			}
			_vm->_soundMan->startVoice(255, panX);
		}
		_vm->_input->discardEvent(kEventSkip);
		_status = 6;
		return kTSYield;

	case 6:
		if (!(_flags & 4) && !_vm->_soundMan->isVoicePlaying())
			_flags |= 4;
		if (!(_flags & 8) && isTimerExpired(_textStartTime, _textEndTime)) {
			_vm->_screenText->removeText();
			if (_entryText && *_entryText) {
				refreshText();
				_vm->_input->discardEvent(kEventSkip);
			} else {
				_flags |= 8;
			}
		}
		if ((_flags & 4) && (_flags & 8)) {
			if (_sequenceId2) {
				Control *control = _vm->_dict->getObjectControl(_objectId);
				control->startSequenceActor(_sequenceId2, 2, 0);
			}
			if (_sequenceId1) {
				Control *control = _vm->_dict->getObjectControl(_objectId);
				control->clearNotifyThreadId2();
			}
			_flags |= 2;
		}
//#define DEBUG_SPEEDUP_TALK
#ifdef DEBUG_SPEEDUP_TALK
if (true) {
#else
		if (_objectId && _vm->_input->pollEvent(kEventSkip)) {
#endif
			if (!(_flags & 8)) {
				_vm->_screenText->removeText();
				if (_entryText && *_entryText)
					refreshText();
				else
					_flags |= 8;
			}
			if (_flags & 8) {
				if (!(_flags & 4)) {
					_vm->_soundMan->stopVoice();
					_flags |= 4;
				}
				if (!(_flags & 2)) {
					if (_sequenceId2) {
						Control *control = _vm->_dict->getObjectControl(_objectId);
						control->startSequenceActor(_sequenceId2, 2, 0);
					}
					if (_sequenceId1) {
						Control *control = _vm->_dict->getObjectControl(_objectId);
						control->clearNotifyThreadId2();
					}
					_flags |= 2;
				}
			}
		}
		if ((_flags & 8) && (_flags & 2) && (_flags & 4)) {
			_vm->_input->discardEvent(kEventSkip);
			_status = 7;
			return kTSTerminate;
		}
		return kTSYield;

	case 7:
		if (!(_flags & 2)) {
			if (_sequenceId2) {
				Control *control = _vm->_dict->getObjectControl(_objectId);
				control->startSequenceActor(_sequenceId2, 2, 0);
			}
			if (_sequenceId1) {
				Control *control = _vm->_dict->getObjectControl(_objectId);
				control->clearNotifyThreadId2();
			}
			_flags |= 2;
		}
		if (!(_flags & 8)) {
			_vm->_screenText->removeText();
			_flags |= 8;
		}
		if (!(_flags & 4)) {
			_vm->_soundMan->stopVoice();
			_flags |= 4;
		}
		return kTSTerminate;

	}

	return kTSTerminate;
}

void TalkThread::onSuspend() {
	switch (_status) {
	case 1:
		_voiceDurationElapsed = getDurationElapsed(_voiceStartTime, _voiceEndTime);
		_status = 7;
		break;
	case 4:
		_vm->_soundMan->stopCueingVoice();
		_status = 7;
		break;
	case 6:
	case 7:
		if (!(_flags & 4)) {
			_vm->_soundMan->stopVoice();
			_flags |= 4;
		}
		if (!(_flags & 8)) {
			_vm->_screenText->removeText();
			_flags |= 8;
		}
		_status = 7;
		break;
	default:
		_status = 7;
		break;
	}
}

void TalkThread::onPause() {
	switch (_status) {
	case 1:
		_voiceDurationElapsed = getDurationElapsed(_voiceStartTime, _voiceEndTime);
		break;
	case 4:
		_vm->_soundMan->stopCueingVoice();
		break;
	case 6:
	case 7:
		if (!(_flags & 4)) {
			_vm->_soundMan->pauseVoice();
		}
		if (!(_flags & 8)) {
			_textDurationElapsed = getDurationElapsed(_textStartTime, _textEndTime);
		}
		break;
	default:
		break;
	}
}

void TalkThread::onUnpause() {
	switch (_status) {
	case 1:
		_voiceStartTime = getCurrentTime();
		if (_voiceDuration <= _voiceDurationElapsed) {
			_voiceDurationElapsed = 0;
			_voiceEndTime = _voiceStartTime;
		} else {
			_voiceDurationElapsed = 0;
			_voiceEndTime = _voiceStartTime + _voiceDuration - _voiceDurationElapsed;
		}
		break;
	case 4:
		if (_vm->isSoundActive()) {
			TalkEntry *talkEntry = getTalkResourceEntry(_talkId);
			_vm->_soundMan->cueVoice((char*)talkEntry->_voiceName);
		}
		break;
	case 6:
		if (!(_flags & 4)) {
			_vm->_soundMan->unpauseVoice();
		}
		if (!(_flags & 8)) {
			_textStartTime = getCurrentTime();
			if (_textDuration <= _textDurationElapsed) {
				_textDurationElapsed = 0;
				_textEndTime = _textStartTime;
			} else {
				_textDurationElapsed = 0;
				_textEndTime = _textStartTime + _textDuration - _textDurationElapsed;
			}
		}
		break;
	}
}

void TalkThread::onTerminated() {
	if (_status == 4) {
		_vm->_soundMan->stopCueingVoice();
	} else if (_status == 6) {
		if (!(_flags & 4)) {
			_vm->_soundMan->stopVoice();
			_flags |= 4;
		}
		if (!(_flags & 8)) {
			_vm->_screenText->removeText();
			_flags |= 8;
		}
		if (!(_flags & 2)) {
			if (_sequenceId2) {
				Control *control = _vm->_dict->getObjectControl(_objectId);
				control->startSequenceActor(_sequenceId2, 2, 0);
			}
			_flags |= 2;
		}
	}
}

void TalkThread::onKill() {
	_callingThreadId = 0;
	sendMessage(kMsgClearSequenceId1, 0);
	sendMessage(kMsgClearSequenceId2, 0);
}
Exemple #5
0
int TimerThread::onUpdate() {
	if (isTimerExpired(_startTime, _endTime) ||
		(_isAbortable && _vm->_input->pollEvent(kEventAbort)))
		return kTSTerminate;
	return kTSYield;
}