/*
 * Core1_Light_Controller.h
 *
 * Created: Sat Jan 21 2023 16:22:25
 *  Author Chris
 */
#ifndef CORE1_LIGHT_CONTROLLER_H_
#define CORE1_LIGHT_CONTROLLER_H_

// ============================================================================================
// Includes
#include <stdint.h>
#include <stdbool.h>

#include "pico/types.h"

#include "EEPROM_M24C64.h"
#include "Command_Definition.h"


// ============================================================================================
// Defines


// ============================================================================================
// Datatypes


// ============================================================================================
// Function Declarations
void Core1_Light_Controller_Init(void);
void Core1_Light_Controller_Tick(void);

void Core1_Light_Controller_MIDI_OnOff_Event_Received(uint8_t midi_command_shifted_right, uint8_t midi_channel);
void Core1_Light_Controller_MIDI_Other_Event_Received(uint8_t midi_data);
void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value);
void Core1_Light_Controller_MIDI_Full_CC_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t controller_number, uint8_t controller_value);

void Core1_Light_Controller_Set_MIDI_To_Light_Enabled(bool enabled);

Note_t 	Core1_Light_Controller_Get_Octave_Note_For_Channel(enum LED_Channel channel);
Value_t Core1_Light_Controller_Get_Note_Value_For_Channel(enum LED_Channel channel);
#endif /* CORE1_LIGHT_CONTROLLER_H_ */
