Feng Hong / Mbed OS Nucleo_rtos_basic
Revision:
19:0356e54240cc
Parent:
18:e6ed582f7022
Child:
20:ec9d4f6a16ac
diff -r e6ed582f7022 -r 0356e54240cc yoda2.h
--- a/yoda2.h	Sat Jul 20 03:57:26 2019 +0000
+++ b/yoda2.h	Tue Sep 24 14:05:58 2019 +0000
@@ -1,3 +1,23 @@
+//#define RASPBERRY_PI_CAN_ADDRESS  0x01
+#define YODA2
+#define RASPBERRY_PI_CAN_TYPE   0x07
+#define RASPBERRY_PI_CAN_ID     0x01
+#define RASPBERRY_PI_CAN_ADDRESS    ((RASPBERRY_PI_CAN_TYPE<<8) | RASPBERRY_PI_CAN_ID)
+
+#ifdef OWN_SOLDER_BOARD
+#define BUTTON1 PB_4        // right // up
+#define BUTTON2 PC_1        // left  // down
+#define BUTTON3 PC_7        // enter    // next
+#define BUTTON4 PA_9        // menu     // back
+#endif
+
+#ifdef YODA2
+#define BUTTON1 PA_8        // right // up
+#define BUTTON2 PB_10        // left  // down
+#define BUTTON3 PB_4        // enter    // next
+#define BUTTON4 PB_5        // menu     // back
+#endif
+
 #define BUTTON1_HOLD_EVENT         0x0001
 #define BUTTON1_PRESSED_EVENT       0x0002
 #define BUTTON2_HOLD_EVENT         0x0004
@@ -6,14 +26,14 @@
 #define BUTTON3_PRESSED_EVENT       0x0020
 #define BUTTON4_HOLD_EVENT         0x0040
 #define BUTTON4_PRESSED_EVENT       0x0080
-#define MENU_HOLD_EVENT          BUTTON4_HOLD_EVENT
-#define MENU_PRESSED_EVENT       BUTTON4_PRESSED_EVENT
-#define ENTER_HOLD_EVENT         BUTTON3_HOLD_EVENT
-#define ENTER_PRESSED_EVENT      BUTTON3_PRESSED_EVENT
-#define LEFT_HOLD_EVENT          BUTTON2_HOLD_EVENT
-#define LEFT_PRESSED_EVENT       BUTTON2_PRESSED_EVENT
-#define RIGHT_HOLD_EVENT         BUTTON1_HOLD_EVENT
-#define RIGHT_PRESSED_EVENT      BUTTON1_PRESSED_EVENT
+#define NEXT_HOLD_EVENT          BUTTON4_HOLD_EVENT
+#define NEXT_PRESSED_EVENT       BUTTON4_PRESSED_EVENT
+#define BACK_HOLD_EVENT         BUTTON3_HOLD_EVENT
+#define BACK_PRESSED_EVENT      BUTTON3_PRESSED_EVENT
+#define DOWN_HOLD_EVENT          BUTTON2_HOLD_EVENT
+#define DOWN_PRESSED_EVENT       BUTTON2_PRESSED_EVENT
+#define UP_HOLD_EVENT         BUTTON1_HOLD_EVENT
+#define UP_PRESSED_EVENT      BUTTON1_PRESSED_EVENT
 #define LCD_DISPLAY_HOLD_EVENT      0x0001
 #define LCD_DISPLAY_RELEASE_EVENT   0x0002
 
@@ -30,6 +50,7 @@
 #define COMMAND_POUR_TEA 10 // for the device to pour the tea return done or failed
 #define COMMAND_FINISH 11   // for everything finished return done or failed
 #define COMMAND_RESET 12    // for the devices return to the point 0 and clean themselvies
+#define COMMAND_REGISTER 13 // for device to register itself to raspberry pi
 
 
 #define WEIGHT_DIFFERENCE   200   // 10g ADC value minimum difference
@@ -37,6 +58,35 @@
 #define MAXIMUM_CALIBRATION_WEIGHT  5000 
 #define MINIMUM_CALIBRATION_WEIGHT  100 
 
+#ifdef OWN_SOLDER_BOARD
+#define EEPROM_ADDR 0x0   // I2c EEPROM address is 0x00
+#endif
+#ifdef YODA2
+#define EEPROM_ADDR 0x57   
+#endif
+#ifdef STM32F207xx
+#define SDA PB_9            // I2C SDA pin
+#define SCL PB_8           // I2C SCL pin
+#endif
+
+#ifdef STM32F303xE
+#ifdef OWN_SOLDER_BOARD
+#define SDA PC_9//D2//D2//PB_9 //PF_0            // I2C SDA pin
+#define SCL D7//D8//D8//PB_8 //PF_1           // I2C SCL pin
+#endif
+#ifdef YODA2
+#define SDA PA_10//D2//D2//PB_9 //PF_0            // I2C SDA pin
+#define SCL PA_9//D8//D8//PB_8 //PF_1           // I2C SCL pin
+#endif
+#endif
+ 
+#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
+#define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
+
+#define EEPROM_DEVICE_ADDRESS_ADDRESS  0x40
+#define DEVICE_DEFAULT_ADDRESS   12
+
+
 enum Device_Type_d
 {
     CupTrack=0,
@@ -44,7 +94,8 @@
     TeaTrack=2,
     Tea=3,
     Jam=4,
-    Shaker=5
+    Shaker=5, 
+    IceMaker=6
 };
 
 struct ScaleCalibrationData {
@@ -52,4 +103,12 @@
   long offsetValue;       // the value for scale offset
   float scaleValue;       // the ADC increment for 1g  
   uint8_t checksum;  
-};
\ No newline at end of file
+};
+
+// because memcpy is 16 byte alignment no byte in struct
+struct data_field_d {
+    uint16_t cmd;
+    uint16_t value1;
+    uint16_t value2;
+    uint16_t value3;
+};