Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed_blinky by
Revision 8:96112047d7f3, committed 2014-08-07
- Comitter:
- mnikolaos
- Date:
- Thu Aug 07 14:54:26 2014 +0000
- Parent:
- 7:5d25743fac86
- Commit message:
- fsm finished
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Aug 06 18:39:59 2014 +0000
+++ b/main.cpp Thu Aug 07 14:54:26 2014 +0000
@@ -2,10 +2,14 @@
Serial pc(USBTX, USBRX);
-DigitalOut gpo(D0);
-DigitalOut led(LED_BLUE);
+DigitalOut gpo1(D1);
+DigitalOut gpo2(D2);
+DigitalOut gpo3(D3);
+DigitalOut ledB(LED_BLUE);
+DigitalOut ledG(LED_GREEN);
+DigitalOut ledR(LED_RED);
-
+Ticker tick;
typedef struct EventTag {
uint16_t sig; /* signal of the event */
@@ -103,59 +107,59 @@
{
(void)e;
- printf("State --> Initial\n");
+ pc.printf("State --> Initial\n");
TRAN(SETTING_FSM_STATE);
}
static void FSM_setting_GO (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Setting - GO Event was caught\n");
+ pc.printf("State --> Setting - GO Event was caught\n");
TRAN(READY_FSM_STATE);
}
static void FSM_setting_OUT (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Setting - OUT Event was caught\n");
+ pc.printf("State --> Setting - OUT Event was caught\n");
}
static void FSM_setting_ERR (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Setting - ERR Event was caught\n");
+ pc.printf("State --> Setting - ERR Event was caught\n");
TRAN(ERROR_STATE);
}
static void FSM_setting_TRAN (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Setting - TRAN ADMIN Event was caught\n");
+ pc.printf("State --> Setting - TRAN ADMIN Event was caught\n");
}
static void FSM_ready_GO (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Ready - GO Event was caught\n");
+ pc.printf("State --> Ready - GO Event was caught\n");
TRAN(ASSIGNED_FSM_STATE);
}
static void FSM_ready_OUT (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Ready - OUT Event was caught\n");
+ pc.printf("State --> Ready - OUT Event was caught\n");
}
static void FSM_ready_TICK (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Ready - TICK Event was caught\n");
+ pc.printf("State --> Ready - TICK Event was caught\n");
}
static void FSM_ready_ERR (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Ready - ERR Event was caught\n");
+ pc.printf("State --> Ready - ERR Event was caught\n");
TRAN(ERROR_STATE);
}
@@ -163,7 +167,7 @@
static void FSM_ready_CONF (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Ready - CONF Event was caught\n");
+ pc.printf("State --> Ready - CONF Event was caught\n");
TRAN(SETTING_FSM_STATE);
}
@@ -171,34 +175,34 @@
static void FSM_ready_TRAN (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Ready - TRAN ADMIN Event was caught\n");
+ pc.printf("State --> Ready - TRAN ADMIN Event was caught\n");
}
static void FSM_assigned_GO (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Assigned - GO Event was caught\n");
+ pc.printf("State --> Assigned - GO Event was caught\n");
TRAN(LOCKED_FSM_STATE);
}
static void FSM_assigned_OUT (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Assigned - OUT Event was caught\n");
+ pc.printf("State --> Assigned - OUT Event was caught\n");
TRAN(READY_FSM_STATE);
}
static void FSM_assigned_TICK (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Assigned - TICK Event was caught\n");
+ pc.printf("State --> Assigned - TICK Event was caught\n");
}
static void FSM_assigned_ERR (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Assigned - ERR Event was caught\n");
+ pc.printf("State --> Assigned - ERR Event was caught\n");
TRAN(ERROR_STATE);
}
@@ -206,7 +210,7 @@
static void FSM_assigned_CONF (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Assigned - CONF Event was caught\n");
+ pc.printf("State --> Assigned - CONF Event was caught\n");
TRAN(SETTING_FSM_STATE);
}
@@ -214,21 +218,21 @@
static void FSM_assigned_TRAN (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Assigned - TRAN ADMIN Event was caught\n");
+ pc.printf("State --> Assigned - TRAN ADMIN Event was caught\n");
}
static void FSM_locked_GO (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Locked - GO Event was caught\n");
+ pc.printf("State --> Locked - GO Event was caught\n");
}
static void FSM_locked_OUT (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Locked - OUT Event was caught\n");
+ pc.printf("State --> Locked - OUT Event was caught\n");
TRAN(ASSIGNED_FSM_STATE);
}
@@ -236,14 +240,14 @@
static void FSM_locked_TICK (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Locked - TICK Event was caught\n");
+ pc.printf("State --> Locked - TICK Event was caught\n");
}
static void FSM_locked_ERR (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Locked - ERR Event was caught\n");
+ pc.printf("State --> Locked - ERR Event was caught\n");
TRAN(ERROR_STATE);
}
@@ -251,7 +255,7 @@
static void FSM_locked_CONF (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Locked - CONF Event was caught\n");
+ pc.printf("State --> Locked - CONF Event was caught\n");
TRAN(SETTING_FSM_STATE);
}
@@ -259,7 +263,7 @@
static void FSM_locked_TRAN (FSM1 *me, Event const *e)
{
(void)e;
- printf("State --> Locked - TRAN ADMIN Event was caught\n");
+ pc.printf("State --> Locked - TRAN ADMIN Event was caught\n");
}
@@ -278,10 +282,28 @@
me->defuse = defuse;
}
-
+
+bool _t1_OVRFL = false;
+ // ISR Timer per 1sec
+ void ISR(void) {
+ _t1_OVRFL = true;
+}
+
+char cmd;
+bool _pc_GTCMD = false;
+// ISR when Gets command
+void Serial_ISR(void) {
+ _pc_GTCMD = true;
+ cmd = pc.getc(); //Gets the command
+}
+
int main()
{
+ pc.baud(9600);
+ pc.attach(&Serial_ISR);
+ tick.attach(&ISR, 1.0);
+
static FSM1 _frdm_fsm;
static Event const go_evt = { GO_SIG };
static Event const out_evt = { OUT_SIG };
@@ -294,12 +316,53 @@
StTbl_init((StateTable *)&_frdm_fsm);
pc.printf("Frdm K64F FSM App\r\n");
-
+ Event const *e = (Event *)0;
+
while (true) {
- printf("Running\r\n\n");
- gpo = !gpo; // toggle pin
- led = !led; // toggle led
+
+ pc.printf("Running\r\n\n");
+ gpo1 = !gpo1; // toggle pin
+ ledB = !ledB; // toggle led
wait(0.2f);
+
+ if(_t1_OVRFL)
+ {
+ _t1_OVRFL = false;
+ StTbl_dispatch((StateTable *)&_frdm_fsm, (Event *)&tick_evt);
+ }
+
+ switch (cmd)
+ {
+ case 'G': {
+ pc.printf(" Go received \n");
+ e = &go_evt;
+ break;
+ }
+ case 'O': {
+ pc.printf(" Out Received \n");
+ e = &out_evt;
+ break;
+ }
+ case 'E': {
+ pc.printf(" Error Received \n");
+ e = &err_evt;
+ break;
+ }
+ case 'C': {
+ pc.printf(" Config Received \n");
+ e = &conf_evt;
+ break;
+ }
+ }
+ if(_pc_GTCMD)
+ {
+ _pc_GTCMD = false;
+ if (e != (Event *)0)
+ {
+ StTbl_dispatch((StateTable *)&_frdm_fsm, e);
+ }
+ }
+
}
}
