mirror of
https://github.com/rvtr/TwlToolsRED.git
synced 2025-10-31 06:41:18 -04:00
177 lines
3.7 KiB
C
177 lines
3.7 KiB
C
#include <twl.h>
|
|
#include "miya_mcu.h"
|
|
|
|
|
|
|
|
static OSMessage MyMesgBuffer[1];
|
|
static OSMessageQueue MyMesgQueue;
|
|
|
|
|
|
static volatile u8 miya_mcu_free_register = 0x44;
|
|
static volatile u32 my_mcu_command = 0;
|
|
static volatile u8 my_mcu_volume = 0;
|
|
static volatile u8 my_mcu_brightness = 0;
|
|
|
|
|
|
static void miya_mcu_free_reg_pxi_callback(PXIFifoTag tag, u32 data, BOOL err)
|
|
{
|
|
#pragma unused(tag)
|
|
#pragma unused(err)
|
|
switch( my_mcu_command ) {
|
|
|
|
case MIYA_MCU_COMMAND_SET_FREE_REG:
|
|
break;
|
|
case MIYA_MCU_COMMAND_GET_FREE_REG:
|
|
miya_mcu_free_register = (u8)(0xff & data);
|
|
break;
|
|
case MIYA_MCU_COMMAND_GET_VOLUME:
|
|
my_mcu_volume = (u8)(0xff & data);
|
|
break;
|
|
case MIYA_MCU_COMMAND_GET_BRIGHTNESS:
|
|
my_mcu_brightness = (u8)(0xff & data);
|
|
break;
|
|
case MIYA_MCU_COMMAND_SET_VOLUME:
|
|
break;
|
|
|
|
case MIYA_MCU_COMMAND_SET_BRIGHTNESS:
|
|
break;
|
|
|
|
default:
|
|
miya_mcu_free_register = (u8)(0xff & data);
|
|
break;
|
|
}
|
|
(void)OS_SendMessage(&MyMesgQueue, (OSMessage)0, OS_MESSAGE_NOBLOCK);
|
|
}
|
|
|
|
void MIYA_MCU_Init(void)
|
|
{
|
|
OS_InitMessageQueue(&MyMesgQueue, &MyMesgBuffer[0], 1);
|
|
PXI_SetFifoRecvCallback(PXI_FIFO_TAG_USER_0, miya_mcu_free_reg_pxi_callback);
|
|
|
|
}
|
|
|
|
static void miya_mcu_send_pxi_data(u32 data)
|
|
{
|
|
my_mcu_command = 0x0f & data;
|
|
while (PXI_SendWordByFifo(PXI_FIFO_TAG_USER_0, data, FALSE) != PXI_FIFO_SUCCESS)
|
|
{
|
|
// do nothing
|
|
}
|
|
}
|
|
|
|
|
|
static void miya_mcu_get_free_reg(void)
|
|
{
|
|
miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_FREE_REG);
|
|
}
|
|
|
|
// miya_mcu_set_free_reg( u8 number, u8 value );
|
|
|
|
static void miya_mcu_set_free_reg( u8 value )
|
|
{
|
|
u32 data;
|
|
data = MIYA_MCU_COMMAND_SET_FREE_REG;
|
|
data |= ((u32)value << 4);
|
|
miya_mcu_send_pxi_data(data);
|
|
}
|
|
|
|
|
|
static void miya_mcu_get_volume(void)
|
|
{
|
|
miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_VOLUME);
|
|
}
|
|
|
|
static void miya_mcu_set_volume(u8 vol)
|
|
{
|
|
u32 data;
|
|
data = MIYA_MCU_COMMAND_SET_VOLUME;
|
|
data |= ((u32)vol << 4);
|
|
miya_mcu_send_pxi_data(data);
|
|
}
|
|
|
|
static void miya_mcu_get_brightness(void)
|
|
{
|
|
miya_mcu_send_pxi_data(MIYA_MCU_COMMAND_GET_BRIGHTNESS);
|
|
}
|
|
|
|
static void miya_mcu_set_brightness(u8 brightness)
|
|
{
|
|
u32 data;
|
|
data = MIYA_MCU_COMMAND_SET_BRIGHTNESS;
|
|
data |= ((u32)brightness << 4);
|
|
miya_mcu_send_pxi_data(data);
|
|
}
|
|
|
|
|
|
|
|
u8 MCU_GetFreeRegister( void )
|
|
{
|
|
OSMessage message;
|
|
miya_mcu_get_free_reg();
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return miya_mcu_free_register;
|
|
}
|
|
|
|
BOOL MCU_SetFreeRegister( u8 value )
|
|
{
|
|
OSMessage message;
|
|
miya_mcu_set_free_reg( value );
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
u8 MCU_GetFreeReg( void )
|
|
{
|
|
OSMessage message;
|
|
miya_mcu_get_free_reg();
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return miya_mcu_free_register;
|
|
}
|
|
|
|
|
|
u8 MCU_GetVolume( void )
|
|
{
|
|
OSMessage message;
|
|
miya_mcu_get_volume();
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return my_mcu_volume;
|
|
}
|
|
|
|
u8 MCU_GetBackLightBrightness( void )
|
|
{
|
|
OSMessage message;
|
|
|
|
miya_mcu_get_brightness();
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return my_mcu_brightness;
|
|
}
|
|
|
|
|
|
BOOL MCU_SetBackLightBrightness( u8 brightness )
|
|
{
|
|
OSMessage message;
|
|
miya_mcu_set_brightness(brightness);
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BOOL MCU_SetVolume( u8 vol )
|
|
{
|
|
OSMessage message;
|
|
miya_mcu_set_volume( vol );
|
|
if( TRUE == OS_ReceiveMessage(&MyMesgQueue, &message, OS_MESSAGE_BLOCK) ) {
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|