STIMA  3
Classes | Enumerations | Functions | Variables
i2c-thr.h File Reference
#include "i2c-thr-config.h"
#include <debug.h>
#include <i2c_config.h>
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
#include <i2c_utility.h>
#include <rmap_utility.h>
#include <sdcard_utility.h>
#include <eeprom_utility.h>
#include <Wire.h>
#include <TimeLib.h>
#include <typedef.h>
#include <SensorDriver.h>
#include <debug_config.h>
#include <SdFat.h>
#include <StreamUtils.h>
#include <ArduinoLog.h>
Include dependency graph for i2c-thr.h:

Go to the source code of this file.

Classes

struct  configuration_t
 EEPROM saved configuration. More...
 
struct  sample_t
 Samples values for measured opc data. More...
 
struct  report_t
 report data. More...
 
struct  readable_data_t
 Readable data through i2c bus. More...
 
struct  writable_data_t
 Writable data through i2c bus. More...
 

Enumerations

enum  state_t {
  INIT , TASKS_EXECUTION , END , INIT ,
  TASKS_EXECUTION , END , INIT , TASKS_EXECUTION ,
  END , INIT , TASKS_EXECUTION , END ,
  INIT , TASKS_EXECUTION , END , INIT ,
  TASKS_EXECUTION , END , INIT , TASKS_EXECUTION ,
  END , INIT , TASKS_EXECUTION , END ,
  INIT , TASKS_EXECUTION , END , REBOOT ,
  INIT , TASKS_EXECUTION , END , INIT ,
  TASKS_EXECUTION , END
}
 Main loop finite state machine. More...
 

Functions

void init_power_down (uint32_t *time_ms, uint32_t debouncing_ms)
 Enter power down mode. More...
 
void init_wdt (uint8_t wdt_timer)
 Init watchdog. More...
 
void init_system (void)
 Init system. More...
 
void init_buffers (void)
 Init buffers. More...
 
void init_tasks (void)
 Init tasks variable and state. More...
 
void init_pins (void)
 Init hardware pins. More...
 
void init_wire (void)
 Init wire (i2c) library and performs checks on the bus. More...
 
void init_spi (void)
 Init SPI library. More...
 
void init_rtc (void)
 Init RTC module. More...
 
void init_sensors (void)
 Create and setup sensors. More...
 
void print_configuration (void)
 Print current configuration. More...
 
void load_configuration (void)
 Load configuration from EEPROM. More...
 
void save_configuration (bool)
 Save configuration to EEPROM. More...
 
void commands (void)
 Performs specific operations based on the received command. More...
 
void tests (void)
 Performs specific operations based on the received command. More...
 
void reset_samples_buffer (void)
 Reset samples buffers to default value. More...
 
void reset_report_buffer (void)
 
void reset_buffer (void)
 Reset sample and observations buffers to default value. More...
 
void exchange_buffers (void)
 Exchange reader and writer pointer to buffer. More...
 
template<typename buffer_g , typename length_v , typename value_v >
value_v bufferRead (buffer_g *buffer, length_v length)
 
template<typename buffer_g , typename length_v , typename value_v >
value_v bufferReadBack (buffer_g *buffer, length_v length)
 
template<typename buffer_g , typename value_v >
void bufferWrite (buffer_g *buffer, value_v value)
 
template<typename buffer_g >
void bufferPtrReset (buffer_g *buffer)
 
template<typename buffer_g , typename length_v >
void bufferPtrResetBack (buffer_g *buffer, length_v length)
 
template<typename buffer_g , typename length_v >
void incrementBuffer (buffer_g *buffer, length_v length)
 
template<typename buffer_g , typename length_v , typename value_v >
void bufferReset (buffer_g *buffer, length_v length)
 
template<typename buffer_g , typename length_v , typename value_v >
void addValue (buffer_g *buffer, length_v length, value_v value)
 
void samples_processing ()
 Main routine for processing the samples to calculate an observation. More...
 
void make_report ()
 
void copy_oneshot_data ()
 
void command_task (void)
 Command Task. Execute the command received on i2c bus by reading i2c received data buffer. More...
 
void i2c_request_interrupt_handler (void)
 I2C request interrupt handler. More...
 
void i2c_receive_interrupt_handler (void)
 

Variables

configuration_t configuration
 
volatile readable_data_t readable_data_1
 
volatile readable_data_t readable_data_2
 
volatile readable_data_treadable_data_read_ptr
 
volatile readable_data_treadable_data_write_ptr
 
volatile readable_data_treadable_data_temp_ptr
 
writable_data_t writable_data
 
writable_data_twritable_data_ptr
 
volatile uint8_t readable_data_address
 
volatile uint8_t readable_data_length
 
volatile uint8_t i2c_rx_data [I2C_MAX_DATA_LENGTH]
 
volatile uint8_t i2c_error
 
volatile uint8_t i2c_time
 
volatile uint8_t ready_tasks_count
 
uint32_t awakened_event_occurred_time_ms
 
bool is_start
 
bool is_stop
 
bool is_oneshot
 
bool is_continuous
 
volatile uint16_t timer_counter_ms
 
SensorDriver * sensors [SENSORS_MAX]
 
uint8_t sensors_count
 
state_t state
 
volatile bool is_event_command_task
 

Enumeration Type Documentation

◆ state_t

enum state_t

Main loop finite state machine.

Enumerator
INIT 

init tasks and sensors

TASKS_EXECUTION 

execute active tasks

END 

go to ENTER_POWER_DOWN or TASKS_EXECUTION

INIT 

init tasks and sensors

TASKS_EXECUTION 

execute active tasks

END 

go to ENTER_POWER_DOWN or TASKS_EXECUTION

INIT 

init tasks and sensors

TASKS_EXECUTION 

execute active tasks

END 

go to ENTER_POWER_DOWN or TASKS_EXECUTION

INIT 

init tasks and sensors

TASKS_EXECUTION 

execute active tasks

END 

go to ENTER_POWER_DOWN or TASKS_EXECUTION

INIT 

init tasks and sensors

TASKS_EXECUTION 

execute active tasks

END 

go to ENTER_POWER_DOWN or TASKS_EXECUTION

REBOOT 

reboot the machine

Function Documentation

◆ command_task()

void command_task ( )

Command Task. Execute the command received on i2c bus by reading i2c received data buffer.

Execute the command received on i2c bus by reading i2c received data buffer.

Returns
void.

◆ commands()

void commands ( )

Performs specific operations based on the received command.

Returns
void.

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS TEST

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

CONTINUOUS START

CONTINUOUS STOP

CONTINUOUS START-STOP

ONESHOT START

ONESHOT STOP

ONESHOT START-STOP

◆ exchange_buffers()

void exchange_buffers ( )

Exchange reader and writer pointer to buffer.

Returns
void.

◆ i2c_request_interrupt_handler()

void i2c_request_interrupt_handler ( )

I2C request interrupt handler.

Returns
void.

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

write crc8

write readable_data_length bytes of data stored in readable_data_read_ptr (base) + readable_data_address (offset) on i2c bus

◆ init_buffers()

void init_buffers ( )

Init buffers.

Returns
void.

copy readable_data_2 in readable_data_1

copy readable_data_2 in readable_data_1

copy readable_data_write in readable_data_read

copy readable_data_write in readable_data_read

copy readable_data_2 in readable_data_1

copy readable_data_2 in readable_data_1

copy readable_data_write in readable_data_read

copy readable_data_write in readable_data_read

copy readable_data_write in readable_data_read

copy readable_data_2 in readable_data_1

copy readable_data_write in readable_data_read

copy readable_data_2 in readable_data_1

copy readable_data_2 in readable_data_1

copy readable_data_write in readable_data_read

copy readable_data_write in readable_data_read

copy readable_data_write in readable_data_read

copy readable_data_2 in readable_data_1

copy readable_data_write in readable_data_read

◆ init_pins()

void init_pins ( )

Init hardware pins.

Returns
void.

◆ init_power_down()

void init_power_down ( uint32_t *  time_ms,
uint32_t  debouncing_ms 
)

Enter power down mode.

Parameters
time_mspointer to a variable to save the last instant you entered power down.
debouncing_msdelay to power down.
Returns
void.

◆ init_rtc()

void init_rtc ( )

Init RTC module.

Returns
void.

◆ init_sensors()

void init_sensors ( )

Create and setup sensors.

Returns
void.

◆ init_spi()

void init_spi ( )

Init SPI library.

Returns
void.

◆ init_system()

void init_system ( )

Init system.

Returns
void.

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

main loop state

◆ init_tasks()

void init_tasks ( )

Init tasks variable and state.

Returns
void.

no tasks ready

no tasks ready

reset samples_count value

no tasks ready

no tasks ready

reset samples_count value

no tasks ready

no tasks ready

reset samples_count value

no tasks ready

no tasks ready

reset samples_count value

no tasks ready

no tasks ready

no tasks ready

no tasks ready

no tasks ready

reset samples_count value

no tasks ready

no tasks ready

no tasks ready

no tasks ready

◆ init_wdt()

void init_wdt ( uint8_t  wdt_timer)

Init watchdog.

Parameters
wdt_timera time value for init watchdog (WDTO_xxxx).
Returns
void.

◆ init_wire()

void init_wire ( )

Init wire (i2c) library and performs checks on the bus.

Returns
void.

clear the I2C bus first before calling Wire.begin()

clear the I2C bus first before calling Wire.begin()

◆ load_configuration()

void load_configuration ( )

Load configuration from EEPROM.

Returns
void.

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

read configuration from eeprom

◆ print_configuration()

void print_configuration ( )

Print current configuration.

Returns
void.

◆ reset_buffer()

void reset_buffer ( void  )

Reset sample and observations buffers to default value.

Returns
void.

◆ reset_samples_buffer()

void reset_samples_buffer ( )

Reset samples buffers to default value.

Returns
void.

◆ samples_processing()

void samples_processing ( )

Main routine for processing the samples to calculate an observation.

Returns
void.

◆ save_configuration()

void save_configuration ( bool  is_default)

Save configuration to EEPROM.

Parameters
is_defaultif true save default configuration; if false save current configuration.
Returns
void.

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

write configuration to eeprom

◆ tests()

void tests ( )

Performs specific operations based on the received command.

Performs tests operations based on the received command.

Returns
void.