]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/commitdiff
Starting to implement the RPP API.
authorCarlos Miguel Jenkins Pérez <carlos@jenkins.co.cr>
Fri, 24 May 2013 00:43:55 +0000 (02:43 +0200)
committerCarlos Miguel Jenkins Pérez <carlos@jenkins.co.cr>
Fri, 24 May 2013 00:43:55 +0000 (02:43 +0200)
17 files changed:
drv/include/i2str.h [deleted file]
drv/include/phy.h [deleted file]
drv/src/drv_din.c
drv/src/i2str.c [deleted file]
drv/src/notification.c
drv/src/phy.c [deleted file]
rpp/generate.py
rpp/include/binary.h
rpp/include/rpp.h
rpp/include/rpp_ain.h
rpp/include/rpp_aout.h
rpp/include/rpp_din.h
rpp/include/types.h
rpp/src/rpp.c
rpp/src/rpp_ain.c
rpp/src/rpp_aout.c
rpp/src/rpp_din.c

diff --git a/drv/include/i2str.h b/drv/include/i2str.h
deleted file mode 100644 (file)
index 14696ef..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#define I2STR_PAD_0  0x100
-#define I2STR_LONG   0x200
-#define I2STR_NUMBER 0x400
-
-int i2str(char *s,long val,int len,int form);
diff --git a/drv/include/phy.h b/drv/include/phy.h
deleted file mode 100644 (file)
index 2b18797..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _PHY_H_
-#define _PHY_H_
-
-/* ************************************************* */
-/*   PHY                                             */
-/* ************************************************* */
-#define PHY_BMCR                               0x0  /* Basic Mode Control Register */
-#define PHY_BMSR                               0x01 /* Basic Mode Status Register */
-#define PHY_ANAR                               0x4  /* Auto-Negotiation Advertisement Register */
-#define PHY_LEDCR                              0x18 /* LED Direct Control Register */
-#define PHY_PHYCR                              0x19 /* PHY Control Register */
-#define PHY_PHYCR2                             0x1C /* PHY Control Register 2 */
-#define PHY_STS                                        0x10 /* PHY Status Register */
-#define PHY_ANLPAR                             0x05 /* Auto-Negotiation Link Partner Ability Register */
-
-/* BMCR */
-#define PHY_RESET_m                    (1 << 15)
-#define PHY_SPEED_m                    (1 << 13)
-#define PHY_AUTONEG_EN_m               (1 << 12) /* ! */
-#define PHY_POWERDOWN_m                        (1 << 11)
-#define PHY_DUPLEX_m                   (1 << 8)
-#define PHY_AUTONEG_REST               (1 << 9)
-
-/* BMSR */
-#define PHY_A_NEG_COMPLETE_m           (1 << 5)
-
-/* ANAR & ANLPAR */
-#define PHY_100BASET4_m                        (1 << 9)
-#define PHY_100BASETXDUPL_m            (1 << 8)
-#define PHY_100BASETX_m                        (1 << 7)
-#define PHY_10BASETDUPL_m              (1 << 6)
-#define PHY_10BASET_m                  (1 << 5)
-
-
-/* ************************************************* */
-void PHY_partner_ability_get(unsigned int mdioBaseAddr, unsigned int phyAddr, unsigned short *data);
-void PHY_configure(unsigned int mdioBaseAddr, unsigned int phyAddr);
-
-
-#endif /* _PHY_H_ */
index c2bdc07288c4886e58daac86fe46e5b7bedb6863..8eee005f1da9b01965fcaa58fa9590b7ac291ef1 100644 (file)
@@ -45,28 +45,28 @@ static const uint32_t din_get_pin_val_i[]  = {14, 15, 16, 17, 18, 19, 20, 21, 0,
  * @return value on pin or -1 if error
  */
 int din_get_pin_val(uint32_t pin) {
-       if (pin > 15) return -1;
-       return ((din_spi_resp & (1 << din_get_pin_val_i[pin])) > 0);
+    if (pin > 15) return -1;
+    return ((din_spi_resp & (1 << din_get_pin_val_i[pin])) > 0);
 }
 
 /**
  * Set programmable pin DIN_SP according bits in argument as switch-to-battery (1) or switch-to-ground(0)
- * @param word 8-bit array representing switch-to state
+ * @param word  8-bit array representing switch-to state
  */
 void din_set_pr(uint8_t word) {
-       int i;
-       uint8_t val;
-       din_spi_cmd = 1 << 16;  // Set command
-
-       for (i = 0; i < 8; i++,word >>= 1) {
-               val = word&0x1;
-               if (val == 1) {
-                       din_spi_cmd |= 1 << din_set_pin_pr_i[i];
-               }
-               else if (val == 0) {
-                       din_spi_cmd &= ~(1 << din_set_pin_pr_i[i]);
-               }
-       }
+    int i;
+    uint8_t val;
+    din_spi_cmd = 1 << 16;  // Set command
+
+    for (i = 0; i < 8; i++,word >>= 1) {
+        val = word&0x1;
+        if (val == 1) {
+            din_spi_cmd |= 1 << din_set_pin_pr_i[i];
+        }
+        else if (val == 0) {
+            din_spi_cmd &= ~(1 << din_set_pin_pr_i[i]);
+        }
+    }
 }
 
 /**
@@ -75,74 +75,74 @@ void din_set_pr(uint8_t word) {
  * @param sg_state 16-bit variable representing state of SP pins. (0 - active, 1 - tri-state).
  */
 void din_set_stat(uint16_t sp_state, uint16_t sg_state) {
-       int i;
-       uint16_t val;
-       uint32_t state = (sp_state&0xFF)|((sg_state&0xFF)<<8);
-       uint32_t* pin_cmd_ptr = NULL;
-       pin_st_p_cmd = 0x9 << 16;               // Set command for SP pins
-       pin_st_g_cmd = 0xA << 16;               // Set command for SG pins
-       for (i = 0; i < 16; i++,state >>= 1) {
-               val = state&0x1;
-               if (i < 8) {    // First 8 pins SP0 - SP7
-                       pin_cmd_ptr = &pin_st_p_cmd;
-               }
-               else { // Another 8 pins SG0 - SG7
-                       pin_cmd_ptr = &pin_st_g_cmd;
-               }
-
-               if (val) {
-                       *pin_cmd_ptr |= 1 << din_set_pin_st_i[i];
-               }
-               else {
-                       *pin_cmd_ptr &= ~(1 << din_set_pin_st_i[i]);
-               }
-       }
-       transfer_state_cmd = 1; // Enable transfer of two commands at once
+    int i;
+    uint16_t val;
+    uint32_t state = (sp_state&0xFF)|((sg_state&0xFF)<<8);
+    uint32_t* pin_cmd_ptr = NULL;
+    pin_st_p_cmd = 0x9 << 16;       // Set command for SP pins
+    pin_st_g_cmd = 0xA << 16;       // Set command for SG pins
+    for (i = 0; i < 16; i++,state >>= 1) {
+        val = state&0x1;
+        if (i < 8) {    // First 8 pins SP0 - SP7
+            pin_cmd_ptr = &pin_st_p_cmd;
+        }
+        else { // Another 8 pins SG0 - SG7
+            pin_cmd_ptr = &pin_st_g_cmd;
+        }
+
+        if (val) {
+            *pin_cmd_ptr |= 1 << din_set_pin_st_i[i];
+        }
+        else {
+            *pin_cmd_ptr &= ~(1 << din_set_pin_st_i[i]);
+        }
+    }
+    transfer_state_cmd = 1; // Enable transfer of two commands at once
 }
 
 /**
  * Enable/disable interrupts for DIN pins as well as acting pins as wake-up
- * @param sp_int_enable        16-bit variable representing interrupt enablers for SP pins (0 - disable wake-up and interrupt, 1 - enable interrupt).
+ * @param sp_int_enable 16-bit variable representing interrupt enablers for SP pins (0 - disable wake-up and interrupt, 1 - enable interrupt).
  * @param sg_int_enable 16-bit variable representing interrupt enablers for SG pins (0 - disable wake-up and interrupt, 1 - enable interrupt).
  */
 void din_set_int(uint16_t sp_int_enable, uint16_t sg_int_enable) {
-       int i;
-       uint16_t val;
-       uint32_t int_enable = (sp_int_enable&0xFF)|((sg_int_enable&0xFF)<<8);
-       uint32_t* pin_cmd_ptr = NULL;
-       pin_int_p_cmd = 0x2 << 16;              // Set command for SP pins
-       pin_int_g_cmd = 0x3 << 16;              // Set command for SG pins
-       for (i = 0; i < 16; i++,int_enable >>= 1) {
-               val = int_enable&0x1;
-               if (i < 8) {    // First 8 pins SP0 - SP7
-                       pin_cmd_ptr = &pin_int_p_cmd;
-               }
-               else { // Another 8 pins SG0 - SG7
-                       pin_cmd_ptr = &pin_int_g_cmd;
-               }
-
-               if (val) {
-                       *pin_cmd_ptr |= 1 << din_set_pin_st_i[i];
-               }
-               else {
-                       *pin_cmd_ptr &= ~(1 << din_set_pin_st_i[i]);
-               }
-       }
-       transfer_interrupt_cmd = 1;     // Enable transfer of two commands at once
+    int i;
+    uint16_t val;
+    uint32_t int_enable = (sp_int_enable&0xFF)|((sg_int_enable&0xFF)<<8);
+    uint32_t* pin_cmd_ptr = NULL;
+    pin_int_p_cmd = 0x2 << 16;      // Set command for SP pins
+    pin_int_g_cmd = 0x3 << 16;      // Set command for SG pins
+    for (i = 0; i < 16; i++,int_enable >>= 1) {
+        val = int_enable&0x1;
+        if (i < 8) {    // First 8 pins SP0 - SP7
+            pin_cmd_ptr = &pin_int_p_cmd;
+        }
+        else { // Another 8 pins SG0 - SG7
+            pin_cmd_ptr = &pin_int_g_cmd;
+        }
+
+        if (val) {
+            *pin_cmd_ptr |= 1 << din_set_pin_st_i[i];
+        }
+        else {
+            *pin_cmd_ptr &= ~(1 << din_set_pin_st_i[i]);
+        }
+    }
+    transfer_interrupt_cmd = 1; // Enable transfer of two commands at once
 }
 
 /**
  * Prepare reset command to be sent through spi
  */
 void din_reset() {
-       din_spi_cmd = 0x7F0000;
+    din_spi_cmd = 0x7F0000;
 }
 
 /**
  * Prepare switch status command to be sent through spi
  */
 void din_switch_st() {
-       din_spi_cmd = 0x0;
+    din_spi_cmd = 0x0;
 }
 
 /**
@@ -150,12 +150,12 @@ void din_switch_st() {
  * @return values of all pins DIN0 - DIN15
  */
 uint16_t din_get_val_word() {
-       uint16_t word = 0;
-       int i;
-       for (i = 0; i < 16; i++) {
-               word |= din_get_pin_val(i) << i;
-       }
-       return word;
+    uint16_t word = 0;
+    int i;
+    for (i = 0; i < 16; i++) {
+        word |= din_get_pin_val(i) << i;
+    }
+    return word;
 }
 
 /**
@@ -166,8 +166,8 @@ uint16_t din_get_val_word() {
  * return spi response
  */
 int din_spi_transfer_mst() {
-       port_desc_t* desc;
-       din_spi_cmd_sh = din_spi_cmd;
+    port_desc_t* desc;
+    din_spi_cmd_sh = din_spi_cmd;
     desc = hal_port_get_dsc(PORT_NAME_DINSPI, -1);
     uint32_t commands[3];
     commands[0] = (din_spi_cmd_sh & 0xFF0000) >> 16;
@@ -175,7 +175,7 @@ int din_spi_transfer_mst() {
     commands[2] = (din_spi_cmd_sh & 0xFF);
 
     din_spi_resp = desc->port_setfnc_ptr(desc->config, desc->numValues, commands);
-       return din_spi_resp;
+    return din_spi_resp;
 }
 
 /**
@@ -188,19 +188,19 @@ int din_spi_transfer_mst() {
  * Returns spi response
  */
 int din_spi_transfer() {
-       if (transfer_state_cmd) {
-               din_spi_cmd = pin_st_p_cmd;
-               din_spi_transfer_mst();
-               din_spi_cmd = pin_st_g_cmd;
-               transfer_state_cmd = 0;
-       }
-       else if (transfer_interrupt_cmd) {
-               din_spi_cmd = pin_int_p_cmd;
-               din_spi_transfer_mst();
-               din_spi_cmd = pin_int_g_cmd;
-               transfer_interrupt_cmd = 0;
-       }
-       return din_spi_transfer_mst();
+    if (transfer_state_cmd) {
+        din_spi_cmd = pin_st_p_cmd;
+        din_spi_transfer_mst();
+        din_spi_cmd = pin_st_g_cmd;
+        transfer_state_cmd = 0;
+    }
+    else if (transfer_interrupt_cmd) {
+        din_spi_cmd = pin_int_p_cmd;
+        din_spi_transfer_mst();
+        din_spi_cmd = pin_int_g_cmd;
+        transfer_interrupt_cmd = 0;
+    }
+    return din_spi_transfer_mst();
 }
 
 /**
@@ -208,7 +208,7 @@ int din_spi_transfer() {
  * @return latest spi response
  */
 int din_spi_response() {
-       return din_spi_resp;
+    return din_spi_resp;
 }
 
 /**
@@ -216,5 +216,5 @@ int din_spi_response() {
  * @return latest sent command
  */
 int din_spi_get_cmd() {
-       return din_spi_cmd;
+    return din_spi_cmd;
 }
diff --git a/drv/src/i2str.c b/drv/src/i2str.c
deleted file mode 100644 (file)
index b084c5c..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************
-  Components for embedded applications builded for
-  laboratory and medical instruments firmware  
-  cmd_i2str.c - formated text to string conversion
-                without need to pull in whole stdio support
-  Copyright (C) 2001-2010 by Pavel Pisa pisa@cmp.felk.cvut.cz
-            (C) 2002-2010 by PiKRON Ltd. http://www.pikron.com
-            (C) 2007 by Michal Sojka <sojkam1@fel.cvut.cz>
-
-  This file can be used and copied according to next
-  license alternatives
-   - MPL - Mozilla Public License
-   - GPL - GNU Public License
-   - other license provided by project originators
- *******************************************************************/
-
-#include "i2str.h"
-
-/**
- * Converts integer to string.
- * @param s Buffer to store the result.
- * @param val Value to convert.
- * @param len Minimal width of the converted strign (padded by ' ').
- * @param form Base of the number.
- * @return 0
- */
-int i2str(char *s,long val,int len,int form)
-{
-  int sig;
-  int dig=1;
-  int padd=0;
-  unsigned base=form&0xff;
-  unsigned long u;
-  unsigned long mag;
-  unsigned long num;
-  if(!base) base=10;
-  if((sig=(val<0)&&(base==10))) num=-val;
-  else num=val;
-  mag=1;
-  u=base*mag;
-  while(num>=u){
-    dig++;
-    mag=u;
-    if(mag>(unsigned long)(~(unsigned long)0)/base) break;
-    u*=base;
-  }
-
-  if(len){
-    padd=len-dig;
-    if(sig) padd--;
-  }
-  if(padd<0) padd=0;
-
-
-  if(form&I2STR_PAD_0) {
-    if(sig) *(s++)='-';
-    while(padd){
-      *(s++)='0';
-      padd--;
-    }
-  }else{
-    while(padd){
-      *(s++)=' ';
-      padd--;
-    }
-    if(sig) *(s++)='-';
-  }
-
-  while(dig--){
-    u=num/mag;
-    if(u>9) *(s++)='A'-10+u;
-    else *(s++)='0'+u;
-    num=num%mag;
-    mag/=base;
-  }
-  *s=0;
-  return 0;
-}
-
index feb4f53f96dd3864d84a5d7ecb1c7047da0957d8..eedeae407028ad241cdb143c683acf74774fd995 100644 (file)
 /** @brief Data structure containing converted data from ADC\r
  *\r
  *  Defined in commands.c */\r
-extern canBASE_t *canDst;\r
-extern canBASE_t *canSrc;\r
-extern uint32_t canMsgBox;\r
-extern uint32_t canSendError;\r
-extern uint32_t canRecError;\r
+//extern canBASE_t *canDst;\r
+//extern canBASE_t *canSrc;\r
+//extern uint32_t canMsgBox;\r
+//extern uint32_t canSendError;\r
+//extern uint32_t canRecError;\r
 /* USER CODE END */\r
 \r
 void esmGroup1Notification(uint32_t channel)\r
diff --git a/drv/src/phy.c b/drv/src/phy.c
deleted file mode 100644 (file)
index 8cbc733..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "sys_common.h"
-
-#include "ti_drv_emac.h"
-#include "ti_drv_mdio.h"
-#include "hw_mdio.h"
-#include "hw_emac.h"
-
-#include "phy.h"
-
-void PHY_partner_ability_get(unsigned int mdioBaseAddr, unsigned int phyAddr, unsigned short *data)
-{
-       MDIOPhyRegRead(mdioBaseAddr, phyAddr, PHY_ANAR, data);
-}
-
-void PHY_configure(unsigned int mdioBaseAddr, unsigned int phyAddr)
-{
-       volatile unsigned short data = 0;
-
-       /* Enable Auto Negotiation */
-       MDIOPhyRegWrite(mdioBaseAddr, phyAddr, PHY_BMCR, 0);
-       MDIOPhyRegWrite(mdioBaseAddr, phyAddr, PHY_BMCR, PHY_RESET_m | PHY_AUTONEG_EN_m);
-
-       /* Write Auto Negotiation capabilities */
-       MDIOPhyRegRead(mdioBaseAddr, phyAddr, PHY_ANAR, &data);
-       data |= (PHY_100BASETXDUPL_m | PHY_100BASETX_m | PHY_10BASETDUPL_m | PHY_10BASET_m);
-       MDIOPhyRegWrite(mdioBaseAddr, phyAddr,
-                       PHY_ANAR, data);
-
-       /* Start Auto Negotiation */
-       MDIOPhyRegRead(mdioBaseAddr, phyAddr, PHY_BMCR, &data);
-       data |= PHY_AUTONEG_REST;
-       MDIOPhyRegWrite(mdioBaseAddr, phyAddr,
-                       PHY_BMCR, data);
-
-       /* Get the auto negotiation status*/
-       /* Wait till auto negotiation is complete */
-       do {
-               MDIOPhyRegRead(mdioBaseAddr, phyAddr, PHY_BMSR, &data);
-       } while ((data & PHY_A_NEG_COMPLETE_m) == 0);
-}
index 602c3421357af6407b27d958bd850490f363a7bc..534e760f7d210291f0f4fe4f4dc227ccbbf0bd0a 100755 (executable)
@@ -80,7 +80,8 @@ def generate_file(where, prefix, mne, ext, abstract, type_name):
                      ' * {mneu} module initialization.\n'
                      ' * Call this method before using this module.\n'
                      ' *\n'
-                     ' * @return Void.\n'
+                     ' * @return SUCCESS if initialization successful.\n'
+                     ' *         FAIL is module already initialized.\n'
                      ' */\n'
                      'void rpp_{mne}_init();\n\n\n'
                      '#endif /* __RPP_{mneu}_H */\n\n').format(**locals()))
@@ -89,13 +90,14 @@ def generate_file(where, prefix, mne, ext, abstract, type_name):
             f.write(('#include "rpp.h"\n\n'
                      '#if rppCONFIG_INCLUDE_{mneu} == 1\n\n'
                      'static boolean_t initialized = FALSE;\n\n'
-                     'void rpp_{mne}_init()\n'
+                     'int8_t rpp_{mne}_init()\n'
                      '{{\n'
                      '    if(initialized) {{\n'
-                     '        return;\n'
+                     '        return FAIL;\n'
                      '    }}\n'
                      '    initialized = TRUE;\n\n'
                      '    // FIXME: Implement.\n'
+                     '   return SUCCESS;\n'
                      '}}\n\n\n'
                      '#endif /* rppCONFIG_INCLUDE_{mneu} */\n\n').format(**locals()))
 
@@ -166,35 +168,39 @@ def generate_files():
                     ' * Library initialization function.\n'
                     ' * Call this method before using this library.\n'
                     ' *\n'
-                    ' * @return Void.\n'
+                    ' * @return SUCCESS if initialization successful.\n'
+                    ' *         FAIL is library was already initialized.\n'
                     ' */\n'
-                    'void rpp_init();\n\n')
+                    'int8_t rpp_init();\n\n')
 
     # Generate library main file
-    with open('src/rpp.c', 'w') as f:
+    generate_rpp_impl = True
+    if(generate_rpp_impl):
+        with open('src/rpp.c', 'w') as f:
 
-        # Write header
-        f.write(header.format(prefix='',
-                              mne='rpp',
-                              ext='.c',
-                              abstract='RPP API library implementation file.'))
-
-        # Include library file
-        f.write('#include "rpp.h"\n\n')
-        f.write('bool rpp_initialized = false;\n\n')
-
-        # Declare initialization function
-        f.write('void rpp_init() {\n\n')
-        f.write('    if(rpp_initialized) {\n'
-                '        return;\n'
-                '    }\n'
-                '    rpp_initialized = true;\n\n')
-        for mne in files:
-            mneu = mne.upper()
-            f.write(('#if rppCONFIG_INCLUDE_{mneu} == 1\n'
-                     '    rpp_{mne}_init();\n'
-                     '#endif\n\n').format(**locals()))
-        f.write('}\n\n')
+            # Write header
+            f.write(header.format(prefix='',
+                                  mne='rpp',
+                                  ext='.c',
+                                  abstract='RPP API library implementation file.'))
+
+            # Include library file
+            f.write('#include "rpp.h"\n\n')
+            f.write('boolean_t initialized = FALSE;\n\n')
+
+            # Declare initialization function
+            f.write('int8_t rpp_init() {\n\n')
+            f.write('    if(initialized) {\n'
+                    '        return FAIL;\n'
+                    '    }\n'
+                    '    initialized = TRUE;\n\n')
+            for mne in files:
+                mneu = mne.upper()
+                f.write(('#if rppCONFIG_INCLUDE_{mneu} == 1\n'
+                         '    rpp_{mne}_init();\n'
+                         '#endif\n\n').format(**locals()))
+            f.write('   return SUCCESS;\n')
+            f.write('}\n\n')
 
 
 if __name__ == '__main__':
index 247628d5c72eab8df4321f0c58e2b8dadb7c2ea9..ddf05b9afd6d83212d4992c6526b2aa63d6c2a94 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * RPP API library header file.
+ * RPP binary handling header file.
  *
  * @file binary.h
  *
 #define bit_clear(value, bit) ((value) &= ~(1UL << (bit)))
 #define bit_write(value, bit, bit_value) (bit_value ? bit_set(value, bit) : bit_clear(value, bit))
 
-#define B0 0
-#define B00 0
-#define B000 0
-#define B0000 0
-#define B00000 0
-#define B000000 0
-#define B0000000 0
-#define B00000000 0
-#define B1 1
-#define B01 1
-#define B001 1
-#define B0001 1
-#define B00001 1
-#define B000001 1
-#define B0000001 1
-#define B00000001 1
-#define B10 2
-#define B010 2
-#define B0010 2
-#define B00010 2
-#define B000010 2
-#define B0000010 2
-#define B00000010 2
-#define B11 3
-#define B011 3
-#define B0011 3
-#define B00011 3
-#define B000011 3
-#define B0000011 3
-#define B00000011 3
-#define B100 4
-#define B0100 4
-#define B00100 4
-#define B000100 4
-#define B0000100 4
-#define B00000100 4
-#define B101 5
-#define B0101 5
-#define B00101 5
-#define B000101 5
-#define B0000101 5
-#define B00000101 5
-#define B110 6
-#define B0110 6
-#define B00110 6
-#define B000110 6
-#define B0000110 6
-#define B00000110 6
-#define B111 7
-#define B0111 7
-#define B00111 7
-#define B000111 7
-#define B0000111 7
-#define B00000111 7
-#define B1000 8
-#define B01000 8
-#define B001000 8
-#define B0001000 8
-#define B00001000 8
-#define B1001 9
-#define B01001 9
-#define B001001 9
-#define B0001001 9
-#define B00001001 9
-#define B1010 10
-#define B01010 10
-#define B001010 10
-#define B0001010 10
-#define B00001010 10
-#define B1011 11
-#define B01011 11
-#define B001011 11
-#define B0001011 11
-#define B00001011 11
-#define B1100 12
-#define B01100 12
-#define B001100 12
-#define B0001100 12
-#define B00001100 12
-#define B1101 13
-#define B01101 13
-#define B001101 13
-#define B0001101 13
-#define B00001101 13
-#define B1110 14
-#define B01110 14
-#define B001110 14
-#define B0001110 14
-#define B00001110 14
-#define B1111 15
-#define B01111 15
-#define B001111 15
-#define B0001111 15
-#define B00001111 15
-#define B10000 16
-#define B010000 16
-#define B0010000 16
-#define B00010000 16
-#define B10001 17
-#define B010001 17
-#define B0010001 17
-#define B00010001 17
-#define B10010 18
-#define B010010 18
-#define B0010010 18
-#define B00010010 18
-#define B10011 19
-#define B010011 19
-#define B0010011 19
-#define B00010011 19
-#define B10100 20
-#define B010100 20
-#define B0010100 20
-#define B00010100 20
-#define B10101 21
-#define B010101 21
-#define B0010101 21
-#define B00010101 21
-#define B10110 22
-#define B010110 22
-#define B0010110 22
-#define B00010110 22
-#define B10111 23
-#define B010111 23
-#define B0010111 23
-#define B00010111 23
-#define B11000 24
-#define B011000 24
-#define B0011000 24
-#define B00011000 24
-#define B11001 25
-#define B011001 25
-#define B0011001 25
-#define B00011001 25
-#define B11010 26
-#define B011010 26
-#define B0011010 26
-#define B00011010 26
-#define B11011 27
-#define B011011 27
-#define B0011011 27
-#define B00011011 27
-#define B11100 28
-#define B011100 28
-#define B0011100 28
-#define B00011100 28
-#define B11101 29
-#define B011101 29
-#define B0011101 29
-#define B00011101 29
-#define B11110 30
-#define B011110 30
-#define B0011110 30
-#define B00011110 30
-#define B11111 31
-#define B011111 31
-#define B0011111 31
-#define B00011111 31
-#define B100000 32
-#define B0100000 32
-#define B00100000 32
-#define B100001 33
-#define B0100001 33
-#define B00100001 33
-#define B100010 34
-#define B0100010 34
-#define B00100010 34
-#define B100011 35
-#define B0100011 35
-#define B00100011 35
-#define B100100 36
-#define B0100100 36
-#define B00100100 36
-#define B100101 37
-#define B0100101 37
-#define B00100101 37
-#define B100110 38
-#define B0100110 38
-#define B00100110 38
-#define B100111 39
-#define B0100111 39
-#define B00100111 39
-#define B101000 40
-#define B0101000 40
-#define B00101000 40
-#define B101001 41
-#define B0101001 41
-#define B00101001 41
-#define B101010 42
-#define B0101010 42
-#define B00101010 42
-#define B101011 43
-#define B0101011 43
-#define B00101011 43
-#define B101100 44
-#define B0101100 44
-#define B00101100 44
-#define B101101 45
-#define B0101101 45
-#define B00101101 45
-#define B101110 46
-#define B0101110 46
-#define B00101110 46
-#define B101111 47
-#define B0101111 47
-#define B00101111 47
-#define B110000 48
-#define B0110000 48
-#define B00110000 48
-#define B110001 49
-#define B0110001 49
-#define B00110001 49
-#define B110010 50
-#define B0110010 50
-#define B00110010 50
-#define B110011 51
-#define B0110011 51
-#define B00110011 51
-#define B110100 52
-#define B0110100 52
-#define B00110100 52
-#define B110101 53
-#define B0110101 53
-#define B00110101 53
-#define B110110 54
-#define B0110110 54
-#define B00110110 54
-#define B110111 55
-#define B0110111 55
-#define B00110111 55
-#define B111000 56
-#define B0111000 56
-#define B00111000 56
-#define B111001 57
-#define B0111001 57
-#define B00111001 57
-#define B111010 58
-#define B0111010 58
-#define B00111010 58
-#define B111011 59
-#define B0111011 59
-#define B00111011 59
-#define B111100 60
-#define B0111100 60
-#define B00111100 60
-#define B111101 61
-#define B0111101 61
-#define B00111101 61
-#define B111110 62
-#define B0111110 62
-#define B00111110 62
-#define B111111 63
-#define B0111111 63
-#define B00111111 63
-#define B1000000 64
-#define B01000000 64
-#define B1000001 65
-#define B01000001 65
-#define B1000010 66
-#define B01000010 66
-#define B1000011 67
-#define B01000011 67
-#define B1000100 68
-#define B01000100 68
-#define B1000101 69
-#define B01000101 69
-#define B1000110 70
-#define B01000110 70
-#define B1000111 71
-#define B01000111 71
-#define B1001000 72
-#define B01001000 72
-#define B1001001 73
-#define B01001001 73
-#define B1001010 74
-#define B01001010 74
-#define B1001011 75
-#define B01001011 75
-#define B1001100 76
-#define B01001100 76
-#define B1001101 77
-#define B01001101 77
-#define B1001110 78
-#define B01001110 78
-#define B1001111 79
-#define B01001111 79
-#define B1010000 80
-#define B01010000 80
-#define B1010001 81
-#define B01010001 81
-#define B1010010 82
-#define B01010010 82
-#define B1010011 83
-#define B01010011 83
-#define B1010100 84
-#define B01010100 84
-#define B1010101 85
-#define B01010101 85
-#define B1010110 86
-#define B01010110 86
-#define B1010111 87
-#define B01010111 87
-#define B1011000 88
-#define B01011000 88
-#define B1011001 89
-#define B01011001 89
-#define B1011010 90
-#define B01011010 90
-#define B1011011 91
-#define B01011011 91
-#define B1011100 92
-#define B01011100 92
-#define B1011101 93
-#define B01011101 93
-#define B1011110 94
-#define B01011110 94
-#define B1011111 95
-#define B01011111 95
-#define B1100000 96
-#define B01100000 96
-#define B1100001 97
-#define B01100001 97
-#define B1100010 98
-#define B01100010 98
-#define B1100011 99
-#define B01100011 99
-#define B1100100 100
-#define B01100100 100
-#define B1100101 101
-#define B01100101 101
-#define B1100110 102
-#define B01100110 102
-#define B1100111 103
-#define B01100111 103
-#define B1101000 104
-#define B01101000 104
-#define B1101001 105
-#define B01101001 105
-#define B1101010 106
-#define B01101010 106
-#define B1101011 107
-#define B01101011 107
-#define B1101100 108
-#define B01101100 108
-#define B1101101 109
-#define B01101101 109
-#define B1101110 110
-#define B01101110 110
-#define B1101111 111
-#define B01101111 111
-#define B1110000 112
-#define B01110000 112
-#define B1110001 113
-#define B01110001 113
-#define B1110010 114
-#define B01110010 114
-#define B1110011 115
-#define B01110011 115
-#define B1110100 116
-#define B01110100 116
-#define B1110101 117
-#define B01110101 117
-#define B1110110 118
-#define B01110110 118
-#define B1110111 119
-#define B01110111 119
-#define B1111000 120
-#define B01111000 120
-#define B1111001 121
-#define B01111001 121
-#define B1111010 122
-#define B01111010 122
-#define B1111011 123
-#define B01111011 123
-#define B1111100 124
-#define B01111100 124
-#define B1111101 125
-#define B01111101 125
-#define B1111110 126
-#define B01111110 126
-#define B1111111 127
-#define B01111111 127
-#define B10000000 128
-#define B10000001 129
-#define B10000010 130
-#define B10000011 131
-#define B10000100 132
-#define B10000101 133
-#define B10000110 134
-#define B10000111 135
-#define B10001000 136
-#define B10001001 137
-#define B10001010 138
-#define B10001011 139
-#define B10001100 140
-#define B10001101 141
-#define B10001110 142
-#define B10001111 143
-#define B10010000 144
-#define B10010001 145
-#define B10010010 146
-#define B10010011 147
-#define B10010100 148
-#define B10010101 149
-#define B10010110 150
-#define B10010111 151
-#define B10011000 152
-#define B10011001 153
-#define B10011010 154
-#define B10011011 155
-#define B10011100 156
-#define B10011101 157
-#define B10011110 158
-#define B10011111 159
-#define B10100000 160
-#define B10100001 161
-#define B10100010 162
-#define B10100011 163
-#define B10100100 164
-#define B10100101 165
-#define B10100110 166
-#define B10100111 167
-#define B10101000 168
-#define B10101001 169
-#define B10101010 170
-#define B10101011 171
-#define B10101100 172
-#define B10101101 173
-#define B10101110 174
-#define B10101111 175
-#define B10110000 176
-#define B10110001 177
-#define B10110010 178
-#define B10110011 179
-#define B10110100 180
-#define B10110101 181
-#define B10110110 182
-#define B10110111 183
-#define B10111000 184
-#define B10111001 185
-#define B10111010 186
-#define B10111011 187
-#define B10111100 188
-#define B10111101 189
-#define B10111110 190
-#define B10111111 191
-#define B11000000 192
-#define B11000001 193
-#define B11000010 194
-#define B11000011 195
-#define B11000100 196
-#define B11000101 197
-#define B11000110 198
-#define B11000111 199
-#define B11001000 200
-#define B11001001 201
-#define B11001010 202
-#define B11001011 203
-#define B11001100 204
-#define B11001101 205
-#define B11001110 206
-#define B11001111 207
-#define B11010000 208
-#define B11010001 209
-#define B11010010 210
-#define B11010011 211
-#define B11010100 212
-#define B11010101 213
-#define B11010110 214
-#define B11010111 215
-#define B11011000 216
-#define B11011001 217
-#define B11011010 218
-#define B11011011 219
-#define B11011100 220
-#define B11011101 221
-#define B11011110 222
-#define B11011111 223
-#define B11100000 224
-#define B11100001 225
-#define B11100010 226
-#define B11100011 227
-#define B11100100 228
-#define B11100101 229
-#define B11100110 230
-#define B11100111 231
-#define B11101000 232
-#define B11101001 233
-#define B11101010 234
-#define B11101011 235
-#define B11101100 236
-#define B11101101 237
-#define B11101110 238
-#define B11101111 239
-#define B11110000 240
-#define B11110001 241
-#define B11110010 242
-#define B11110011 243
-#define B11110100 244
-#define B11110101 245
-#define B11110110 246
-#define B11110111 247
-#define B11111000 248
-#define B11111001 249
-#define B11111010 250
-#define B11111011 251
-#define B11111100 252
-#define B11111101 253
-#define B11111110 254
-#define B11111111 255
-
-
 #endif /* __RPP_BINARY_H */
index f86f4b498741e1b1a31e1021b96a362d41652673..49fdd4d400e9f8026deb1f865bc8618c1f1c81a5 100644 (file)
@@ -15,6 +15,9 @@
 #define HIGH 0x1
 #define LOW  0x0
 
+#define SUCCESS 0x1
+#define FAIL    0x0
+
 /* Standard includes */
 #include "types.h"
 #include "binary.h"
index 705ad4017f4ec6988ccff5808d0d068a5d8f2176..941a0dbf51de7f0b3b9f3443277a7506b62b0960 100644 (file)
  * AIN module initialization.
  * Call this method before using this module.
  *
- * @return Void.
+ * @return SUCCESS if initialization successful.
+ *         FAIL is module already initialized.
  */
-void rpp_ain_init();
+int8_t rpp_ain_init();
+
+
+/**
+ * Get the current analog value on the given pin.
+ *
+ * @param[in] pin       The pin number to read [1-12].
+ * @return  Value between 0-4095 (ADC is 12bit resolution) representing the
+ *          analog value on given pin.
+ *         -1 if pin number is out of range.
+ */
+int8_t rpp_ain_get(uint8_t pin);
 
 
 #endif /* __RPP_AIN_H */
index c2ec8e6366d2180e366d7f660106b3223bf98e53..136c6448bf582a42fa0cf41053368c0f6edd34b6 100644 (file)
  * AOUT module initialization.
  * Call this method before using this module.
  *
- * @return Void.
+ * @return SUCCESS if initialization successful.
+ *         FAIL is module already initialized.
  */
-void rpp_aout_init();
+int8_t rpp_aout_init();
+
+
+
+int16_t rpp_aout_setup(uint8_t pin, boolean_t enable);
+
+
+/**
+ * Set the given analog value to the given pin.
+ *
+ * @param[in] pin       The pin number to set [1-4].
+ * @param[in] val       The value to set the analog output [0-4095].
+ * @return  Value between 0-4095 (ADC is 12bit resolution) representing the
+ *          analog value on given pin.
+ *         -1 if pin number is out of range.
+ */
+int16_t rpp_aout_set(uint8_t pin, uint16_t val);
+
+
+int16_t rpp_aout_set_volt(uint8_t pin, uint16_t val);
+
+
+
+/*
+ * Commit .
+ *
+ * @return  Status of the SPI transfer. FIXME: Document status.
+ */
+int rpp_aout_update();
 
 
 #endif /* __RPP_AOUT_H */
index 9922c67088848fbd85a967751e09c84ec880e70e..71323f0235091ee02994ec1d6a2ebc83f77e95dd 100644 (file)
  * DIN module initialization.
  * Call this method before using this module.
  *
- * @return Void.
+ * @return SUCCESS if initialization successful.
+ *         FAIL is module already initialized.
  */
-void rpp_din_init();
+int8_t rpp_din_init();
+
+
+/**
+ * Configure pull type for given pin.
+ *
+ * @param[in] pin       The pin number to read [1-16].
+ * @param[in] pull_type PULLUP or PULLDOWN to set pull type for given pin.
+ *                      Note that only inputs [x-y] support pull-down. All pins
+ *                      support pull-up. FIXME: Find ranges.
+ * @return  0 if successful.
+ *         -1 if pin number is out of range.
+ *         -2 if pull_type is requested for inputs without this feature.
+ */
+int8_t rpp_din_setup(uint8_t pin, uint8_t pull_type);
+
+
+/**
+ * Get the current cached value of the given pin.
+ *
+ * @param[in] pin       The pin number to read [1-16].
+ * @param[in] var_thr   Use variable threshold uncached high speed channel to
+ *                      read the value (True), or use SPI cached value (False).
+ *                      Note that only inputs [x-z] can use this option. Inputs
+ *                      [x-y] use variable threshold A and [y-z] use variable
+ *                      threshold B. FIXME: Find ranges.
+ * @return  HIGH or LOW if successful.
+ *         -1 if pin number is out of range.
+ *         -2 if var_thr is requested for inputs without this feature.
+ */
+int8_t rpp_din_get(uint8_t pin, boolean_t var_thr);
+
+
+/**
+ * Get the diagnostic value for given pin.
+ *
+ * @param[in] pin       The pin number to read [1-16].
+ * @return  HIGH or LOW if successful.
+ *         -1 if pin number is out of range.
+ */
+int8_t rpp_din_diagnostic(uint8_t pin);
+
+
+/**
+ * Read and update cached values and diagnostic values of all pins.
+ *
+ * @return  Status of the SPI transfer. FIXME: Document status.
+ */
+int rpp_din_update();
 
 
 #endif /* __RPP_DIN_H */
index 0f72e34d322d80b41d269fbcdcf337a52f82a12e..1df58bed423320145e315f85b7a0d63a1cdcfcb8 100644 (file)
 *   @brief NULL definition
 */
 #ifndef NULL
-#define NULL ((void *) 0U)
+#define NULL ((void *) 0x0)
 #endif
 
 /** @def TRUE
 *   @brief definition for TRUE
 */
 #ifndef TRUE
-#define TRUE 1U
+#define TRUE 0x1
 #endif
 
 /** @def FALSE
 *   @brief Boolean definition for FALSE
 */
 #ifndef FALSE
-#define FALSE 0U
+#define FALSE 0x0
 #endif
 
 /** @def HIGH
index c40bf38c049396f541dc9297a920d91f98572a8d..c27097d0586c8ab1e27af13bcf8aea578551695c 100644 (file)
 
 #include "rpp.h"
 
-bool rpp_initialized = false;
+boolean_ rpp_initialized = FALSE;
 
 void rpp_init() {
 
     if(rpp_initialized) {
         return;
     }
-    rpp_initialized = true;
+    rpp_initialized = TRUE;
 
 #if rppCONFIG_INCLUDE_DIN == 1
     rpp_din_init();
index 37cb832c9dc53bfa6cf1e0251b9ffc2f8caee050..5c005779bafe156ed1b7ac9cef38c5923f245c30 100644 (file)
 
 static boolean_t initialized = FALSE;
 
-void rpp_ain_init()
+uint8_t rpp_ain_init()
 {
     if(initialized) {
-        return;
+        return FAIL;
     }
     initialized = TRUE;
 
     // FIXME: Implement.
+    return SUCCESS;
 }
 
 
index b3034c03c806241d1ac99ecbea416c078ed7224b..bf0eb88dcea4e6046bfc2f5067b8224e2d71faf1 100644 (file)
 
 static boolean_t initialized = FALSE;
 
-void rpp_aout_init()
+uint8_t rpp_aout_init()
 {
     if(initialized) {
-        return;
+        return FAIL;
     }
     initialized = TRUE;
 
     // FIXME: Implement.
+    return SUCCESS;
 }
 
 
index f5a881e8d85793959b3d26ac2d6cbb7ea1bdde1d..7a6fc8977b83831611a21df232960ab94eabda2a 100644 (file)
 
 static boolean_t initialized = FALSE;
 
-void rpp_din_init()
+uint8_t rpp_din_init()
 {
     if(initialized) {
-        return;
+        return FAIL;
     }
     initialized = TRUE;
 
     // FIXME: Implement.
+    return SUCCESS;
 }