Преглед изворни кода

change pointer to void && hide structure

guoyongchao пре 6 година
родитељ
комит
3ab83a6fed

+ 11 - 3
encoder/ab_phase_encoder.c

@@ -4,6 +4,14 @@
 #define DBG_LEVEL         DBG_LOG
 #include <rtdbg.h>
 
+struct ab_phase_encoder
+{
+    struct encoder  enc;
+    rt_base_t       pin_a;            /* interrupt pin  */
+    rt_base_t       pin_b;
+    rt_int16_t      last_value;
+};
+
 static const uint8_t AB_PHASE_ENCODER_TABLE[4] = {2, 0, 3, 1};
 
 static void encoder_isr(void *args)
@@ -24,7 +32,7 @@ static void encoder_isr(void *args)
     enc_sub->last_value = val;
 }
 
-static rt_err_t ab_phase_encoder_enable(encoder_t enc)
+static rt_err_t ab_phase_encoder_enable(void *enc)
 {
     RT_ASSERT(enc != RT_NULL);
 
@@ -43,7 +51,7 @@ static rt_err_t ab_phase_encoder_enable(encoder_t enc)
     return RT_EOK;
 }
 
-static rt_err_t ab_phase_encoder_disable(encoder_t enc)
+static rt_err_t ab_phase_encoder_disable(void *enc)
 {
     RT_ASSERT(enc != RT_NULL);
 
@@ -55,7 +63,7 @@ static rt_err_t ab_phase_encoder_disable(encoder_t enc)
     return RT_EOK;
 }
 
-static rt_err_t ab_phase_encoder_destroy(encoder_t enc)
+static rt_err_t ab_phase_encoder_destroy(void *enc)
 {
     RT_ASSERT(enc != RT_NULL);
 

+ 1 - 8
encoder/ab_phase_encoder.h

@@ -3,14 +3,7 @@
 
 #include "encoder.h"
 
-struct ab_phase_encoder
-{
-    struct encoder  enc;
-    rt_base_t       pin_a;            /* interrupt pin  */
-    rt_base_t       pin_b;
-    rt_int16_t      last_value;
-};
-
+struct ab_phase_encoder;
 typedef struct ab_phase_encoder *ab_phase_encoder_t;
 
 ab_phase_encoder_t ab_phase_encoder_create(rt_base_t pin_a, rt_base_t pin_b, rt_uint16_t pulse_revol);

+ 3 - 3
encoder/encoder.h

@@ -21,9 +21,9 @@ struct encoder
     rt_int32_t              last_count;
     rt_int16_t              cps;
     enum encoder_direction  dir;
-    rt_err_t                (*enable)(encoder_t enc);
-    rt_err_t                (*disable)(encoder_t enc);
-    rt_err_t                (*destroy)(encoder_t enc);
+    rt_err_t                (*enable)(void *enc);
+    rt_err_t                (*disable)(void *enc);
+    rt_err_t                (*destroy)(void *enc);
 };
 
 encoder_t       encoder_create(rt_size_t size);

+ 9 - 3
encoder/single_phase_encoder.c

@@ -4,6 +4,12 @@
 #define DBG_LEVEL         DBG_LOG
 #include <rtdbg.h>
 
+struct single_phase_encoder
+{
+    struct encoder  enc;
+    rt_base_t       pin;            /* interrupt pin  */
+};
+
 static void encoder_isr(void *args)
 {
     rt_int32_t* pulse_count = (rt_int32_t*)args;
@@ -11,7 +17,7 @@ static void encoder_isr(void *args)
     // LOG_D("Count %d", *pulse_count);
 }
 
-static rt_err_t single_phase_encoder_enable(encoder_t enc)
+static rt_err_t single_phase_encoder_enable(void *enc)
 {
     RT_ASSERT(enc != RT_NULL);
 
@@ -25,7 +31,7 @@ static rt_err_t single_phase_encoder_enable(encoder_t enc)
     return rt_pin_irq_enable(enc_sub->pin, PIN_IRQ_ENABLE);
 }
 
-static rt_err_t single_phase_encoder_disable(encoder_t enc)
+static rt_err_t single_phase_encoder_disable(void *enc)
 {
     RT_ASSERT(enc != RT_NULL);
 
@@ -34,7 +40,7 @@ static rt_err_t single_phase_encoder_disable(encoder_t enc)
     return rt_pin_irq_enable(enc_sub->pin, PIN_IRQ_DISABLE);;
 }
 
-static rt_err_t single_phase_encoder_destroy(encoder_t enc)
+static rt_err_t single_phase_encoder_destroy(void *enc)
 {
     RT_ASSERT(enc != RT_NULL);
 

+ 1 - 6
encoder/single_phase_encoder.h

@@ -3,12 +3,7 @@
 
 #include "encoder.h"
 
-struct single_phase_encoder
-{
-    struct encoder  enc;
-    rt_base_t       pin;            /* interrupt pin  */
-};
-
+struct single_phase_encoder;
 typedef struct single_phase_encoder *single_phase_encoder_t;
 
 single_phase_encoder_t single_phase_encoder_create(rt_base_t pin, rt_uint16_t pulse_revol);