git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@251 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
b83cd4a1dc
commit
42a90cc8ce
|
@ -73,17 +73,14 @@ static const seqop_t LED3_sequence[] =
|
||||||
/**
|
/**
|
||||||
* Sequencer thread class. It can drive LEDs or other output pins.
|
* Sequencer thread class. It can drive LEDs or other output pins.
|
||||||
*/
|
*/
|
||||||
class SequencerThread : BaseThread {
|
class SequencerThread : EnhancedThread<64> {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
WorkingArea(wa, 64); // Thread working area.
|
|
||||||
const seqop_t *base, *curr; // Thread local variables.
|
const seqop_t *base, *curr; // Thread local variables.
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual msg_t Main(void) {
|
virtual msg_t Main(void) {
|
||||||
|
|
||||||
while (TRUE) {
|
while (true) {
|
||||||
switch(curr->action) {
|
switch(curr->action) {
|
||||||
case SLEEP:
|
case SLEEP:
|
||||||
Sleep(curr->value);
|
Sleep(curr->value);
|
||||||
|
@ -105,7 +102,8 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SequencerThread(const seqop_t *sequence) : BaseThread(NORMALPRIO, 0, wa, sizeof wa) {
|
SequencerThread(const seqop_t *sequence):
|
||||||
|
EnhancedThread<64>("sequencer", NORMALPRIO, 0) {
|
||||||
|
|
||||||
base = curr = sequence;
|
base = curr = sequence;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
generic and architecture indipendent.
|
generic and architecture indipendent.
|
||||||
./src/templates/ - ChibiOS/RT non portable source templates, new ports
|
./src/templates/ - ChibiOS/RT non portable source templates, new ports
|
||||||
are started by copying the templates into a new
|
are started by copying the templates into a new
|
||||||
directory under ./demos/.
|
directory under ./demos/ and/or ./ports/.
|
||||||
./ports/ - Architecture/compiler specific portable files.
|
./ports/ - Architecture specific portable files.
|
||||||
./demos/ - Demo programs for specific archtectures/boards.
|
./demos/ - Demo programs for specific archtectures/boards.
|
||||||
./test/ - Test code, used by some demos.
|
./test/ - Test code, used by some demos.
|
||||||
./docs/Doxifile - Doxigen project file.
|
./docs/Doxifile - Doxigen project file.
|
||||||
|
|
|
@ -29,12 +29,12 @@ namespace chibios_rt {
|
||||||
chSysInit();
|
chSysInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Lock(void) {
|
void System::Lock(void) {
|
||||||
|
|
||||||
chSysLock();
|
chSysLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unlock(void) {
|
void System::Unlock(void) {
|
||||||
|
|
||||||
chSysUnlock();
|
chSysUnlock();
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,11 @@ namespace chibios_rt {
|
||||||
#endif /* CH_USE_SLEEP */
|
#endif /* CH_USE_SLEEP */
|
||||||
|
|
||||||
#ifdef CH_USE_MESSAGES
|
#ifdef CH_USE_MESSAGES
|
||||||
|
msg_t BaseThread::SendMessage(::Thread* tp, msg_t msg) {
|
||||||
|
|
||||||
|
return chMsgSend(tp, msg);
|
||||||
|
}
|
||||||
|
|
||||||
msg_t BaseThread::SendMessage(msg_t msg) {
|
msg_t BaseThread::SendMessage(msg_t msg) {
|
||||||
|
|
||||||
return chMsgSend(thread_ref, msg);
|
return chMsgSend(thread_ref, msg);
|
||||||
|
|
|
@ -146,6 +146,11 @@ namespace chibios_rt {
|
||||||
#endif /* CH_USE_SLEEP */
|
#endif /* CH_USE_SLEEP */
|
||||||
|
|
||||||
#ifdef CH_USE_MESSAGES
|
#ifdef CH_USE_MESSAGES
|
||||||
|
/**
|
||||||
|
* Sends a message to the thread and returns the answer.
|
||||||
|
*/
|
||||||
|
static msg_t SendMessage(::Thread *tp, msg_t msg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a message to the thread and returns the answer.
|
* Sends a message to the thread and returns the answer.
|
||||||
*/
|
*/
|
||||||
|
@ -178,6 +183,25 @@ namespace chibios_rt {
|
||||||
virtual msg_t Main(void);
|
virtual msg_t Main(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enhanced threads template class. This class introduces thread names
|
||||||
|
* and static working area allocation.
|
||||||
|
*/
|
||||||
|
template <int N>
|
||||||
|
class EnhancedThread : public BaseThread {
|
||||||
|
protected:
|
||||||
|
WorkingArea(wa, N); // Thread working area.
|
||||||
|
|
||||||
|
public:
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
EnhancedThread(const char *tname, tprio_t prio, tmode_t mode) :
|
||||||
|
BaseThread(prio, mode, wa, sizeof wa) {
|
||||||
|
|
||||||
|
name = tname;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef CH_USE_SEMAPHORES
|
#ifdef CH_USE_SEMAPHORES
|
||||||
/**
|
/**
|
||||||
* Class encapsulating a /p Semaphore.
|
* Class encapsulating a /p Semaphore.
|
||||||
|
|
Loading…
Reference in New Issue