aaa

Dependencies:   mbed BNO055_fusion Adafruit_GFX ros_lib_kinetic

Revision:
8:80708bacb5b5
Parent:
7:b240464868e8
--- a/myCan.h	Tue Dec 18 22:06:34 2018 +0000
+++ b/myCan.h	Thu Dec 20 20:54:35 2018 +0000
@@ -12,30 +12,38 @@
 typedef uint16_t FIXED_NUM_16;
 
 typedef union{
-    char array[8];
+    char array[6];
     
     struct{
         uint8_t frameName;
-        uint8_t id;
         FIXED_NUM_16 x;
         FIXED_NUM_16 y;
+        uint8_t use_can_ack;
     }data;
 }can_odom_xy_t;
 
-//pose initializeとフレームを共用にするためcourt_colorを入れた
-//通常のデータ送信では使わない
 typedef union{
-//    char array[8];
-    uint8_t array[8];
+    char array[6];
     
     struct{
         uint8_t frameName;
-        uint8_t id;
         uint8_t angle[4];
-        uint8_t court_color;
+        uint8_t use_can_ack;
     }data;
 }can_odom_angle_t;
 
+typedef union{
+    char array[3];
+    
+    struct{
+        uint8_t frameName;
+        uint8_t court_color : 1;
+        uint8_t enable_oled : 1;
+        uint8_t unuse : 6;
+        uint8_t use_can_ack;
+    }data;
+}can_odom_config_t;
+
 #define NORMAL_TYPE                 (0x00)
 #define PING_TYPE                   (0x01)
 #define ACK_TYPE                    (0x02)
@@ -43,7 +51,7 @@
 #define ID_MAIN                     (0x00)
 #define ID_ODOM                     (0x01)
 
-#define FIXED_NUM_INT_MAX 0x0f
+#define FIXED_NUM_INT_MAX           (0x0f)
 #define CAN_FILTER_SID_MASK         (0x07ff)
 #define CAN_FILTER_TYP_MASK         (0x0007)
 #define CAN_FILTER_SND_MASK         (0x0078)
@@ -53,7 +61,8 @@
 #define ODOM_DATA_ANGLE             (0xa1)
 #define ODOM_SET_INITIAL_XY         (0xa2)
 #define ODOM_SET_INITIAL_ANGLE      (0xa3)
-#define ODOM_RESET                  (0xa4)
+#define ODOM_SET_CONFIG             (0xa4)
+#define ODOM_RESET                  (0xa5)
 /* CAN_GLOBAL DEFINE END */
 
 class My_Can : public Odom_Abstract, CAN
@@ -63,11 +72,14 @@
         FunctionPointer led_toggle_;
         
         Timer timer_;
+        
+        bool enable_send_odom_;
     
     public:
         My_Can(Odom *odom) : Odom_Abstract(odom), CAN(PB_8, PB_9, 1000000){
             filter(CreateSid(0, ID_MAIN, ID_ODOM), CAN_FILTER_SND_MASK | CAN_FILTER_DST_MASK, CANStandard);
             timer_.start();
+            enable_send_odom_ = false;
         }
         
         void initialize_amcl_attach(My_Ros *object, void (My_Ros::*member)(void)){
@@ -91,6 +103,7 @@
     private:
     
         void check_initial_frame(uint8_t *data);
+        void send_odom();
         
         FIXED_NUM_16 EncodeFixedNumber(float fn){
             uint16_t sign_part = 0;