Commit 8e217da719be35ffebbe61711ab683f9c2a3344e

Authored by Imanol-Mikel Barba Sabariego
1 parent 3813a6db

--no commit message

Project/applications/smartcities/include/adc.h
... ... @@ -12,7 +12,6 @@
12 12  
13 13 #include "libwismart.h"
14 14 #include "ch.h"
15   -
16 15 #include "stm32f10x_gpio.h"
17 16 #include "stm32f10x_adc.h"
18 17  
... ...
Project/applications/smartcities/include/buffer.h
  1 +
  2 +/**@file
  3 + * @brief Declaration for the internal buffer and memory management
  4 + * @author Maria Jorba Brosa
  5 + * @date 08/06/2014
  6 + *
  7 + * The functions declared in this file manage the I2C functionality of the device to use with the sensors
  8 + */
  9 +
1 10 #ifndef BUFFER_H
2 11 #define BUFFER_H
3 12  
4 13 #include "libwismart.h"
5 14 #include "json.h"
6 15  
  16 +//!Soft limit definition
  17 +/*! This variable defines at which point the soft limit for used memory is reached. The specified value is used memory bytes. */
7 18 #define SOFT_LIMIT 8192 /* en bytes -> 8k * 1024 */
  19 + //!Hard limit definition
  20 +/*! This variable defines at which point the hard limit for used memory is reached. The specified value is used memory bytes.*/
8 21 #define HARD_LIMIT 10240
  22 +
  23 +//! Memory OK status definition
9 24 #define MEMORY_OK 0
  25 +//! Soft limit status definition
10 26 #define SOFT_REACHED 1
  27 +//! Hard limit status definition
11 28 #define HARD_REACHED 2
12 29  
  30 +//! Debug printing definition
  31 +/*! This definition is used for debugging purposes, it is a shorthand for printing debug information */
13 32 #define DBG_BUFFER(fmt,...) printf("%c[1;35mbuffer.c:%c[1;00m "fmt,0x1B,0x1B, ##__VA_ARGS__)
14 33 //#define DBG_BUFFER(fmt,...) printf("")
15 34  
16   -char** put_message(char* info, char** buf,uint32_t *index, uint32_t *buf_len);
  35 +//! Value write into buffer function
  36 +/*! This function stores data into a memory buffer. It frees the memory of the old one, which is passed by argument, and returns a new one with the value stored. */
  37 +char** put_message(char* info /*! Data to be stored */, char** buf /*! Old buffer */ ,uint32_t *index /*! Buffer index to store the data */, uint32_t *buf_len /*! Old buffer length */);
  38 +
  39 +//! Memory check function
  40 +/*! This function checks the current used memory and returns the memory status definitions according to the amount of memory used. */
17 41 int check_memory(void);
18   -int send(char** buf, uint32_t *index, uint32_t *size, char *provider_ID, char *sensor_ID);
19   -char** join_buf(char** buf, uint32_t *buf_len);
  42 +
  43 +//! Buffer data send function
  44 +/*! This function sends the data in a specified buffer to the server. If successful, it frees the memory used by it. */
  45 +int send(char** buf /*! Buffer to send */, uint32_t *index /*! Current buffer index */, uint32_t *size /*! Buffer size */, char *provider_ID /*! Current module ID */, char *sensor_ID /*! Sensor ID for the data stored in that buffer */);
  46 +
  47 +//! Buffer join function
  48 +/*! This function returns a copy of the buffer passed by argument with one more slot to store another piece of data from the sensors */
  49 +char** join_buf(char** buf /*! Old buffer */, uint32_t *buf_len /*! Old buffer length*/);
20 50  
21 51 #endif
22 52 \ No newline at end of file
... ...
Project/applications/smartcities/include/i2c.h
  1 +
  2 +/**@file
  3 + * @brief Declaration for the I2C functionality
  4 + * @author Imanol Barba Sabariego
  5 + * @date 08/06/2014
  6 + *
  7 + * The functions declared in this file manage the I2C functionality of the device to use with the sensors
  8 + */
  9 +
1 10 #ifndef I2C_H
2 11 #define I2C_H
3 12  
... ... @@ -7,22 +16,54 @@
7 16 #include "sensors.h"
8 17 #include "libwismart.h"
9 18  
  19 +//! I2C Response timeout
  20 +/*! This variable defines how many milliseconds will the device without obtaining answer from the bus until it considers that there is no I2C device in the address being polled. */
10 21 #define I2C_TIMEOUT 100
11 22  
  23 +//! Debug printing definition
  24 +/*! This definition is used for debugging purposes, it is a shorthand for printing debug information */
12 25 #define DBG_I2C(fmt,...) printf("%c[1;35mi2c.c:%c[1;00m "fmt,0x1B,0x1B, ##__VA_ARGS__)
13 26 //#define DBG_I2C(fmt,...) printf("")
14 27  
15   -
  28 +//! I2C initialization function
  29 +/*! This function initializes the I2C bus in use for the sensors, which is I2C1, at a hardware level. */
16 30 void I2C_init(void);
17   -void I2C_start(I2C_TypeDef* I2Cx, uint8_t address, uint8_t direction);
18   -void I2C_stop(I2C_TypeDef* I2Cx);
19   -void I2C_write(I2C_TypeDef* I2Cx, uint8_t data);
20   -uint8_t I2C_read_ack(I2C_TypeDef* I2Cx);
21   -uint8_t I2C_read_nack(I2C_TypeDef* I2Cx);
22   -void I2C_scan(I2C_TypeDef* I2Cx,uint8_t *addresses);
23   -uint8_t I2C_check(I2C_TypeDef* I2Cx, uint8_t address);
24   -void I2C_reset(I2C_TypeDef* I2Cx);
25   -void I2C_restart(I2C_TypeDef* I2Cx, uint8_t address, uint8_t direction);
  31 +
  32 +//! I2C comunication Start function
  33 +/*! This function generates a START sequence in the I2C bus and sends the 7 bit address passed in the arguments along with the R/W bit. */
  34 +void I2C_start(I2C_TypeDef* I2Cx /*! I2C device to use */, uint8_t address /*! I2C slave address */, uint8_t direction /*! R/W bit. Possible values are I2C_Direction_Transmitter and I2C_Direction_Receiver */);
  35 +
  36 +//! I2C communication Stop function
  37 +/*! This function generaates a STOP sequence in the I2C bus, stopping the communication between master and slave */
  38 +void I2C_stop(I2C_TypeDef* I2Cx /*! I2C device to use */);
  39 +
  40 +//! I2C write byte function
  41 +/*! This function writes a byte into the bus using the specified I2C device */
  42 +void I2C_write(I2C_TypeDef* I2Cx /*! I2C device to use */, uint8_t data /*! Byte to write */);
  43 +
  44 +//! I2C read byte function (with master ACK)
  45 +/*! This function fetches a byte from the I2C bus that has been stored into the internal register and sends and ACK afterwards. */
  46 +uint8_t I2C_read_ack(I2C_TypeDef* I2Cx /*! I2C device to use */);
  47 +
  48 +//! I2C read byte function (without master ACK)
  49 +/*! This function fetches a byte from the I2C bus that has been stored into the internal register without sending and ACK afterwards. */
  50 +uint8_t I2C_read_nack(I2C_TypeDef* I2Cx /*! I2C device to use */);
  51 +
  52 +//! I2C bus scan function
  53 +/*! This function scans the I2C bus in search of known sensor addresses and returns them in the addresses array passed by argument. */
  54 +void I2C_scan(I2C_TypeDef* I2Cx /*! I2C device to use */,uint8_t *addresses /*! Array to be filled */);
  55 +
  56 +//! I2C presence check function
  57 +/*! This function checks a specified address to see if there are any slave devices listening. */
  58 +uint8_t I2C_check(I2C_TypeDef* I2Cx /*! I2C device to use */, uint8_t address /*! Address to check */);
  59 +
  60 +//! I2C bus reset function
  61 +/*! This function resets the I2C bus in case that a timeout occurred, pulling both lines up and resetting the internal registers to a known state. */
  62 +void I2C_reset(I2C_TypeDef* I2Cx /*! I2C device to reset */);
  63 +
  64 +//! I2C communication repeated Start function
  65 +/*! This function sends a repeated START sequence (a START sequence for which no previous STOP sequence was sent). */
  66 +void I2C_restart(I2C_TypeDef* I2Cx /*! I2C device to use */, uint8_t address /*! I2C slave address */, uint8_t direction /*! R/W bit. Possible values are I2C_Direction_Transmitter and I2C_Direction_Receiver */);
26 67  
27 68  
28 69 #endif
... ...
Project/applications/smartcities/main.c
  1 +
  2 +/**@file
  3 + * @brief Main loop and global functions and variables
  4 + * @author Imanol Barba Sabariego, Ferràn Quer i Guerrero, Maria Jorba Brosa, Emilio Soca Herrera
  5 + * @date 08/06/2014
  6 + *
  7 + * This file holds the main function, which contains the main loop itself and necessary global functions and variables used to manage the state of the device.
  8 + */
  9 +
1 10 #include <string.h>
2 11 #include "libwismart.h"
3 12 #include "libwismart_irqs.h" /* implement irq handlers */
... ... @@ -12,6 +21,7 @@
12 21 #include "ntp.h"
13 22 #include "sensors.h"
14 23  
  24 +//! Debug printing definition
15 25 /*! This definition is used for debugging purposes, it is a shorthand for printing debug information */
16 26 #define DBG(fmt,...) printf("%c[1;35mmain.c:%c[1;00m "fmt,0x1B,0x1B, ##__VA_ARGS__)
17 27 //#define DBG(fmt,...) printf("")
... ... @@ -52,7 +62,7 @@ void initLibwismart(void)
52 62  
53 63 //! NTP time update function
54 64 /*! This function is called upon NTP update request and uses the methods declared in ntp.h to do so. */
55   -void update_time(unsigned long *time)
  65 +void update_time(unsigned long *time /*! Variable to store the new time */)
56 66 {
57 67 do
58 68 {
... ... @@ -136,7 +146,7 @@ void init_registry(void)
136 146  
137 147 //! Function to send data to the server
138 148 /*! This function sends all the data in the memory to the server */
139   -void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t sensors[])
  149 +void send_data(char** buffers[] /*! Array of in-memory buffers containing the data */, uint32_t ind[] /*! Buffer indexes */ , uint32_t sizes[] /*! Buffer sizes */, uint8_t sensors[] /*! Array of sensors addresses currently connected to the device */)
140 150 {
141 151 int j;
142 152 for(j=0;j<sensors_length;j++)
... ... @@ -150,7 +160,7 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso
150 160  
151 161 //! Buffer data insertion function
152 162 /*! This function inserts processed data in the memory */
153   -void put_buffers(char** buffers[],uint32_t ind[],uint32_t sizes[],char** cooked, uint8_t* sensors)
  163 +void put_buffers(char** buffers[],/*! Array of in-memory buffers containing the data */, uint32_t ind[] /*! Buffer indexes */ , uint32_t sizes[] /*! Buffer sizes */,char** cooked /*! Array of processed data from the sensors */, uint8_t* sensors /*! Array of sensors addresses currently connected to the device */)
154 164 {
155 165 DBG("Putting data in buffers...\r\n");
156 166 int i;
... ... @@ -168,7 +178,7 @@ void put_buffers(char** buffers[],uint32_t ind[],uint32_t sizes[],char** cooked,
168 178  
169 179 //! Data timestamping function
170 180 /*! This function timestamps de collected data using the methods defined in ntp.h */
171   -char** timestamp_datas(char* value[],unsigned long timestamp, uint8_t* sensors)
  181 +char** timestamp_datas(char* value[] /*! Raw data collected from the sensors */,unsigned long timestamp /* Current timestamp to add to the measurements*/, uint8_t* sensors /*! Array of sensors addresses currently connected to the device */)
172 182 {
173 183 DBG("Timestamping data...\r\n");
174 184 char** cooked_data;
... ... @@ -206,7 +216,7 @@ void wifi_connect(void)
206 216  
207 217 //! Battery reporting function
208 218 /*! This function checks the battery level and sends it to the server */
209   -void send_battery_level(unsigned long timestamp)
  219 +void send_battery_level(unsigned long timestamp /*! Current timestamp to add to the battery level measurement */)
210 220 {
211 221 DBG("Polling battery level...\r\n");
212 222 char *batt_level = battery_value(get_battery_data());
... ...