]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
Add new ORTE type for CMU cam and bumpers. CAN daemon updated.
authorTran Duy Khanh <trandk1@fel.cvut.cz>
Thu, 1 May 2008 02:16:06 +0000 (04:16 +0200)
committerTran Duy Khanh <trandk1@fel.cvut.cz>
Thu, 1 May 2008 02:16:06 +0000 (04:16 +0200)
src/cand/eb2008/cand_eb2008.cc
src/common/Makefile.omk
src/types/robottype_eb2008.c
src/types/robottype_eb2008.h
src/types/robottype_eb2008.idl

index f9657dfab2e6751e0762102a660aff3ea472d2fd..8f2fdbe229ef301f1ec37facede9cf1fcec93500 100644 (file)
@@ -22,6 +22,8 @@
 #include <canutils.h>
 
 #include <can_ids.h>
+#include <can_msg_masks.h>
+#include <can_msg_def.h>
 #include <sharp.h>
 #include <orte.h>
 #include <roboorte_eb2008.h>
@@ -346,6 +348,17 @@ int cand_parse_frame(struct eb2008_orte_data *orte_eb2008,
                        }
                        break;
 
+               case CAN_CMU:
+                       orte_eb2008->cmu.color = frame.data[0];
+                       ORTEPublicationSend(orte_eb2008->publication_cmu);
+                       break;
+
+               case CAN_BUMPER:
+                       orte_eb2008->bumper.left = frame.data[0] & LEFT_BUMPER;
+                       orte_eb2008->bumper.right = frame.data[0] & RIGHT_BUMPER;
+                       ORTEPublicationSend(orte_eb2008->publication_bumper);
+                       break;
+
                default:
 //                     printf("received CAN msg with unknown id: %x\n",frame.can_id);
                        break;
@@ -485,6 +498,8 @@ int main(int argc, char *argv[])
        eb2008_publisher_laser_meas_create(&orte_eb2008, NULL, NULL);
        eb2008_publisher_laser_data_create(&orte_eb2008, NULL, NULL);
        eb2008_publisher_sharps_create(&orte_eb2008, NULL, NULL);
+       eb2008_publisher_cmu_create(&orte_eb2008, NULL, NULL);
+       eb2008_publisher_bumper_create(&orte_eb2008, NULL, NULL);
 
        /* creating subscribers */
        generic_subscriber_pwr_ctrl_create(&orte_generic, 
index 95784d5768db4dac63b5691bd3c3e864f8b2b927..af91d80815a7472d099b1d0c1931c2981f455f58 100644 (file)
@@ -1,5 +1,5 @@
 #lib_LIBRARIES = can
 #can_SOURCES =
 
-include_HEADERS = can_ids.h can_msg_masks.h
+include_HEADERS = can_ids.h can_msg_masks.h can_msg_def.h
 
index d26868eebdcdfdcea04fa5d7ee8ee1d1f19b83f4..e1be4b736278351b5f2bf6d324f0658a0c8471bf 100644 (file)
@@ -271,3 +271,70 @@ sharps_type_register(ORTEDomain *d) {
   return ret;
 }
 
+/****************************************************************/
+/* struct - cmu                                                 */
+/****************************************************************/
+
+void cmu_serialize(CDR_Codec *cdrCodec,cmu *object) {
+  CORBA_octet_serialize(cdrCodec,&(object->color));
+}
+
+void
+cmu_deserialize(CDR_Codec *cdrCodec,cmu *object) {
+  CORBA_octet_deserialize(cdrCodec,&(object->color));
+}
+
+int
+cmu_get_max_size(ORTEGetMaxSizeParam *gms) {
+  CORBA_octet_get_max_size(gms);
+  return gms->csize;
+}
+
+Boolean
+cmu_type_register(ORTEDomain *d) {
+  Boolean ret;
+
+  ret=ORTETypeRegisterAdd(d,
+                          "cmu",
+                          (ORTETypeSerialize)cmu_serialize,
+                          (ORTETypeDeserialize)cmu_deserialize,
+                          cmu_get_max_size,
+                          0);
+  return ret;
+}
+
+/****************************************************************/
+/* struct - bumper                                              */
+/****************************************************************/
+
+void bumper_serialize(CDR_Codec *cdrCodec,bumper *object) {
+  CORBA_octet_serialize(cdrCodec,&(object->left));
+  CORBA_octet_serialize(cdrCodec,&(object->right));
+}
+
+void
+bumper_deserialize(CDR_Codec *cdrCodec,bumper *object) {
+  CORBA_octet_deserialize(cdrCodec,&(object->left));
+  CORBA_octet_deserialize(cdrCodec,&(object->right));
+}
+
+int
+bumper_get_max_size(ORTEGetMaxSizeParam *gms) {
+  CORBA_octet_get_max_size(gms);
+  CORBA_octet_get_max_size(gms);
+  return gms->csize;
+}
+
+Boolean
+bumper_type_register(ORTEDomain *d) {
+  Boolean ret;
+
+  ret=ORTETypeRegisterAdd(d,
+                          "bumper",
+                          (ORTETypeSerialize)bumper_serialize,
+                          (ORTETypeDeserialize)bumper_deserialize,
+                          bumper_get_max_size,
+                          0);
+  return ret;
+}
+
index 5f33783386476f54fb64a3b6ee257ea43e27288b..0ccef3949bbc6f6dcad7bda79c3d3b50fa2bc90d 100644 (file)
@@ -86,6 +86,23 @@ CORBA_double back_left;
 CORBA_double back_right;
 };
 
+#endif
+#if !defined(_cmu_defined)
+#define _cmu_defined 1
+typedef struct cmu_type cmu;
+struct cmu_type {
+CORBA_octet color;
+};
+
+#endif
+#if !defined(_bumper_defined)
+#define _bumper_defined 1
+typedef struct bumper_type bumper;
+struct bumper_type {
+CORBA_octet left;
+CORBA_octet right;
+};
+
 #endif
 
 /** impls declarations **/
@@ -119,6 +136,16 @@ void sharps_deserialize(CDR_Codec *cdrCodec,sharps *object);
 int sharps_get_max_size(ORTEGetMaxSizeParam *gms);
 Boolean sharps_type_register(ORTEDomain *d);
 
+void cmu_serialize(CDR_Codec *cdrCodec,cmu *object);
+void cmu_deserialize(CDR_Codec *cdrCodec,cmu *object);
+int cmu_get_max_size(ORTEGetMaxSizeParam *gms);
+Boolean cmu_type_register(ORTEDomain *d);
+
+void bumper_serialize(CDR_Codec *cdrCodec,bumper *object);
+void bumper_deserialize(CDR_Codec *cdrCodec,bumper *object);
+int bumper_get_max_size(ORTEGetMaxSizeParam *gms);
+Boolean bumper_type_register(ORTEDomain *d);
+
 
 #ifdef __cplusplus
 }
index edde17dac6321de1a1ae1751900194c882cee13d..bca7de4bca61fb30d38b052abd8db3a1bdddc0fa 100644 (file)
@@ -46,3 +46,12 @@ struct sharps {
        double back_left;
        double back_right;
 };
+
+struct cmu {
+       octet color;
+};
+
+struct bumper {
+       octet left;
+       octet right;
+};