Meg_PowerSimulation.c 1.6 KB
#include "JZsdkLib.h"
#include "Megaphone/Volume/volume.h"
#include "Megaphone/Megaphone.h"

static double PowerSimulation = 0; //用于模拟喊话器功率状态

static void *JZsdk_PowerSimulationThread(void *args)
{
    T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();
    
    while(1)
    {
        //获取当前播放状态
        int play_status = Megaphone_GetMegaphoneStatus();

        //生产一个随机数
        U16_t randomNum;
        OsalHandle->GetRandomNum(&randomNum);  // 获取 0~65535 的随机数
  
        // 转换为 [0.5, 1.2) 范围
        double normalized = 0.5 + ((double)randomNum / 65535.0) * 0.7;

        //获取音量百分比
        int volume = Megaphone_GetUiVolume();
        double _volume = (double)volume / 100;
        if (_volume < 0.1)
        {
            _volume = 0.1;
        }
        
        if (play_status == AUDIO_PLAY_STATUS_IDLE)
        {
            PowerSimulation =  25 * 0.1 * normalized;
        }
        else
        {
            PowerSimulation =  25* _volume * normalized;
        }

        //printf("PowerSimulation:%0.1f\n",PowerSimulation);

        OsalHandle->TaskSleepMs(1000);
    }
}

//获取模拟功率
double JZsdk_GetMagaphonePowerSimulation()
{
    return PowerSimulation;
}

static T_JZsdkReturnCode PowerSimulation_Init()
{
    T_JZsdkOsalHandler *OsalHandle = JZsdk_Platform_GetOsalHandler();

    T_JZTaskHandle single_task = NULL;
    OsalHandle->TaskCreate("PowerSimulation", JZsdk_PowerSimulationThread, 8192, NULL , &single_task);
    
    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}