summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Schodet2012-05-14 20:54:52 +0200
committerNicolas Schodet2012-05-14 23:41:41 +0200
commit4b954db9a8bc6eeccf14a39178aa0fa7536b72c9 (patch)
treed4d9bd004a4c9bd7a929ea7b2e1804449b78615f
parent175669b647f26fefc2f7a863e112b1c8bb11ecf3 (diff)
digital/asserv, digital/mimot: stop outputs before reset
-rw-r--r--digital/asserv/src/asserv/cs.c20
-rw-r--r--digital/asserv/src/asserv/cs.h3
-rw-r--r--digital/asserv/src/asserv/main.c1
-rw-r--r--digital/asserv/src/asserv/twi_proto.c1
-rw-r--r--digital/mimot/src/dirty/cs.c13
-rw-r--r--digital/mimot/src/dirty/cs.h3
-rw-r--r--digital/mimot/src/dirty/main.c1
-rw-r--r--digital/mimot/src/dirty/twi_proto.c1
8 files changed, 43 insertions, 0 deletions
diff --git a/digital/asserv/src/asserv/cs.c b/digital/asserv/src/asserv/cs.c
index fe15c5d2..826c2d3c 100644
--- a/digital/asserv/src/asserv/cs.c
+++ b/digital/asserv/src/asserv/cs.c
@@ -93,3 +93,23 @@ cs_update (void)
#endif
}
+void
+cs_reset (void)
+{
+ output_set (&output_left, 0);
+ output_set (&output_right, 0);
+ output_brake (&output_left, 0);
+ output_brake (&output_right, 0);
+ control_state_set_mode (&cs_main.state, CS_MODE_NONE, 0);
+#if AC_ASSERV_AUX_NB
+ uint8_t i;
+ for (i = 0; i < AC_ASSERV_AUX_NB; i++)
+ {
+ output_set (&output_aux[i], 0);
+ output_brake (&output_aux[i], 0);
+ control_state_set_mode (&cs_aux[i].state, CS_MODE_NONE, 0);
+ }
+#endif
+ output_update ();
+}
+
diff --git a/digital/asserv/src/asserv/cs.h b/digital/asserv/src/asserv/cs.h
index 1887ec35..b39826c8 100644
--- a/digital/asserv/src/asserv/cs.h
+++ b/digital/asserv/src/asserv/cs.h
@@ -47,4 +47,7 @@ cs_update_prepare (void);
void
cs_update (void);
+void
+cs_reset (void);
+
#endif /* cs_h */
diff --git a/digital/asserv/src/asserv/main.c b/digital/asserv/src/asserv/main.c
index e8355fbd..d7ee370f 100644
--- a/digital/asserv/src/asserv/main.c
+++ b/digital/asserv/src/asserv/main.c
@@ -267,6 +267,7 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
{
case c ('z', 0):
/* Reset. */
+ cs_reset ();
utils_reset ();
break;
/* Commands. */
diff --git a/digital/asserv/src/asserv/twi_proto.c b/digital/asserv/src/asserv/twi_proto.c
index 190c3caf..7c649e1c 100644
--- a/digital/asserv/src/asserv/twi_proto.c
+++ b/digital/asserv/src/asserv/twi_proto.c
@@ -127,6 +127,7 @@ twi_proto_callback (u8 *buf, u8 size)
{
case c ('z', 0):
/* Reset. */
+ cs_reset ();
utils_reset ();
break;
case c ('w', 0):
diff --git a/digital/mimot/src/dirty/cs.c b/digital/mimot/src/dirty/cs.c
index 73c2cbd1..fad1bc98 100644
--- a/digital/mimot/src/dirty/cs.c
+++ b/digital/mimot/src/dirty/cs.c
@@ -67,3 +67,16 @@ cs_update (void)
control_system_single_update (&cs_aux[i]);
}
+void
+cs_reset (void)
+{
+ uint8_t i;
+ for (i = 0; i < AC_ASSERV_AUX_NB; i++)
+ {
+ output_set (&output_aux[i], 0);
+ output_brake (&output_aux[i], 0);
+ control_state_set_mode (&cs_aux[i].state, CS_MODE_NONE, 0);
+ }
+ output_update ();
+}
+
diff --git a/digital/mimot/src/dirty/cs.h b/digital/mimot/src/dirty/cs.h
index ab3c3a62..c754e380 100644
--- a/digital/mimot/src/dirty/cs.h
+++ b/digital/mimot/src/dirty/cs.h
@@ -40,4 +40,7 @@ cs_update_prepare (void);
void
cs_update (void);
+void
+cs_reset (void);
+
#endif /* cs_h */
diff --git a/digital/mimot/src/dirty/main.c b/digital/mimot/src/dirty/main.c
index f6b7fd6a..187f013a 100644
--- a/digital/mimot/src/dirty/main.c
+++ b/digital/mimot/src/dirty/main.c
@@ -206,6 +206,7 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
{
case c ('z', 0):
/* Reset. */
+ cs_reset ();
utils_reset ();
break;
/* Commands. */
diff --git a/digital/mimot/src/dirty/twi_proto.c b/digital/mimot/src/dirty/twi_proto.c
index 3ac4b8a4..66cdb5aa 100644
--- a/digital/mimot/src/dirty/twi_proto.c
+++ b/digital/mimot/src/dirty/twi_proto.c
@@ -108,6 +108,7 @@ twi_proto_callback (u8 *buf, u8 size)
{
case c ('z', 0):
/* Reset. */
+ cs_reset ();
utils_reset ();
break;
case c ('b', 4):