Page MenuHomec4science

power_sbcp.c
No OneTemporary

File Metadata

Created
Sun, Jul 28, 00:35

power_sbcp.c

#include <packet.h>
#include "power_sbcp.h"
#include "spi_led.h"
#include "buttons.h"
#include "speaker.h"
#include "timer.h"
/**
* \brief Called when sbcp changes frequency or volume
* Called when sbcp changes frequency or volume, makes sure values are correct and sets the sound accordingly
* @param address
* @param newvalue
* @return
*/
sbcp_error sound_register_callback(sbcp_reg_address address, sbcp_reg_val * newvalue){
if(address == ADDRESS_SPEAKER_VOLUME){
if(newvalue->u > VOLUME_4){
newvalue->u = VOLUME_4;
}
set_speaker_volume(newvalue->u);
}
if(address == ADDRESS_SPEAKER_FREQ){
if(newvalue->u == 0){
newvalue->u = sbcp_reg_uint(ADDRESS_SPEAKER_FREQ);
return SBCP_NO_ERROR;
}
set_speaker_freq(newvalue->u);
}
return SBCP_NO_ERROR;
}
/**
* \brief init the sbcp-registers
* init the sbcp-registers
*/
void init_my_registers(){
sbcp_add_register(ADDRESS_MAXIMUM_BATTERY_VOLTAGE, DEFAULT_MAXIMUM_BATTERY_VOLTAGE, SBCP_REG_READABLE | SBCP_REG_WRITABLE | SBCP_REG_PERSISTENT, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_MINIMUM_BATTERY_VOLTAGE, DEFAULT_MINIMUM_BATTERY_VOLTAGE, SBCP_REG_READABLE | SBCP_REG_WRITABLE | SBCP_REG_PERSISTENT, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_CRITICAL_BATTERY_VOLTAGE, DEFAULT_CRITICAL_BATTERY_VOLTAGE, SBCP_REG_READABLE | SBCP_REG_WRITABLE | SBCP_REG_PERSISTENT, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_MAXIMUM_CURRENT, DEFAULT_MAXIMUM_CURRENT, SBCP_REG_READABLE | SBCP_REG_WRITABLE | SBCP_REG_PERSISTENT, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_POWER_STATUS, DEFAULT_POWER_STATUS, SBCP_REG_READABLE, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_POWER_MONITOR_MODE, DEFAULT_POWER_MONITOR_MODE, SBCP_REG_READABLE | SBCP_REG_WRITABLE, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_POWER_INPUT_VOLTAGE, DEFAULT_POWER_INPUT_VOLTAGE, SBCP_REG_READABLE, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_POWER_TOTAl_CURRENT, DEFAULT_POWER_TOTAl_CURRENT, SBCP_REG_READABLE, SBCP_REG_NO_CALLBACK);
sbcp_add_register(ADDRESS_SPEAKER_FREQ, DEFAULT_SPEAKER_FREQ, SBCP_REG_READABLE | SBCP_REG_WRITABLE, &sound_register_callback);
sbcp_add_register(ADDRESS_SPEAKER_VOLUME, DEFAULT_SPEAKER_VOLUME, SBCP_REG_READABLE | SBCP_REG_WRITABLE, &sound_register_callback);
}
/**
* \brief Init the sbcp-instruction for saying the device has started
* Init the sbcp-instruction for saying the device has started
*/
void init_my_instructions(){
sbcp_add_instruction(SBCP_INST_DEVICE_SPECIFIC_START, &host_is_up);
}

Event Timeline