diff options
Diffstat (limited to 'Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_generic.c')
-rw-r--r-- | Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_generic.c | 349 |
1 files changed, 210 insertions, 139 deletions
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_generic.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_generic.c index 0ecaea465..c5d21b225 100644 --- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_generic.c +++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_generic.c @@ -6,7 +6,7 @@ ****************************************************************************** * @attention * - * <h2><center>© Copyright (c) 2019 STMicroelectronics. + * <h2><center>© Copyright (c) 2020 STMicroelectronics. * All rights reserved.</center></h2> * * This software component is licensed by ST under Ultimate Liberty license @@ -50,16 +50,21 @@ extern MOBLEUINT16 IntensityValue; extern MOBLEUINT8 IntensityFlag; extern MOBLEUINT8 PowerOnOff_flag; extern Appli_LightPwmValue_t Appli_LightPwmValue; -Appli_Generic_OnOffSet AppliOnOffSet; -Appli_Generic_LevelSet AppliLevelSet; -Appli_Generic_PowerOnOffSet AppliPowerOnSet; -Appli_Generic_DefaultTransitionSet AppliDefaultTransitionSet; + +Appli_Generic_OnOffSet AppliOnOffSet[APPLICATION_NUMBER_OF_ELEMENTS]; +Appli_Generic_LevelSet AppliLevelSet[APPLICATION_NUMBER_OF_ELEMENTS]; +Appli_Generic_PowerOnOffSet AppliPowerOnSet[APPLICATION_NUMBER_OF_ELEMENTS]; +Appli_Generic_DefaultTransitionSet AppliDefaultTransitionSet[APPLICATION_NUMBER_OF_ELEMENTS]; /* Private function prototypes -----------------------------------------------*/ -MOBLE_RESULT Appli_Generic_Move_Set(Generic_LevelStatus_t* pdeltaMoveParam, - MOBLEUINT8 OptionalValid); -MOBLE_RESULT Appli_Generic_Delta_Set(Generic_LevelStatus_t* pdeltalevelParam, - MOBLEUINT8 OptionalValid); +MOBLE_RESULT Appli_Generic_LevelDelta_Set(Generic_LevelStatus_t* pdeltalevelParam, + MOBLEUINT8 OptionalValid, + MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex); +MOBLE_RESULT Appli_Generic_LevelMove_Set(Generic_LevelStatus_t* pdeltaMoveParam, + MOBLEUINT8 OptionalValid, + MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex); /* Private functions ---------------------------------------------------------*/ /******************************************************************************/ @@ -71,43 +76,57 @@ MOBLE_RESULT Appli_Generic_Delta_Set(Generic_LevelStatus_t* pdeltalevelParam, * when Generic OnOff message is received * @param pGeneric_OnOffParam: Pointer to the parameters received for message * @param OptionalValid: Flag to inform about the validity of optional parameters +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam, - MOBLEUINT8 OptionalValid) + MOBLEUINT8 OptionalValid, MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex) { - AppliOnOffSet.Present_OnOff = pGeneric_OnOffParam->Present_OnOff_State; - AppliOnOffSet.Present_OnOffValue = pGeneric_OnOffParam->Present_OnOff_Value; - + /*User need to modify the parameters as per the number of elements per node*/ + AppliOnOffSet[elementIndex].Present_OnOff = pGeneric_OnOffParam->Present_OnOff_State; + AppliOnOffSet[elementIndex].Present_OnOffValue = pGeneric_OnOffParam->Present_OnOff_Value; - /* This condition is applicable when user want to on off the light with some default - * transition value, or optionalValid =IN_TRANSITION , transition is in progress. - */ + /* This condition is applicable when user want to on off the light with some + default transition value, or optionalValid =IN_TRANSITION , + transition is in progress. + */ if((OptionalValid == DEFAULT_TRANSITION) || (OptionalValid == IN_TRANSITION)) { - Appli_LightPwmValue.IntensityValue = AppliOnOffSet.Present_OnOffValue; + Appli_LightPwmValue.IntensityValue = AppliOnOffSet[elementIndex].Present_OnOffValue; Light_UpdateLedValue(LOAD_STATE ,Appli_LightPwmValue); - if(AppliOnOffSet.Present_OnOff == APPLI_LED_ON) + + #if 0 /* EME */ + if(AppliOnOffSet[elementIndex].Present_OnOff == APPLI_LED_ON) { - AppliOnOffSet.TargetValue = PWM_TIME_PERIOD; + AppliOnOffSet[elementIndex].TargetValue = PWM_TIME_PERIOD; } else { - AppliOnOffSet.TargetValue = APPLI_LED_OFF; + AppliOnOffSet[elementIndex].TargetValue = APPLI_LED_OFF; } + #else + AppliOnOffSet[elementIndex].TargetValue = pGeneric_OnOffParam->Target_OnOff; + #endif /* EME */ - if(AppliOnOffSet.Present_OnOffValue > 16000) - { - BSP_LED_On(LED_BLUE); - } - else + if(AppliOnOffSet[elementIndex].Present_OnOffValue == AppliOnOffSet[elementIndex].TargetValue) { - BSP_LED_Off(LED_BLUE); + if(AppliOnOffSet[elementIndex].Present_OnOffValue > 0) + { + BSP_LED_On(LED_BLUE); + } + else + { + BSP_LED_Off(LED_BLUE); + } } } else { - if((AppliOnOffSet.Present_OnOff == APPLI_LED_ON) && (OptionalValid == NO_TRANSITION)) + if((AppliOnOffSet[elementIndex].Present_OnOff == APPLI_LED_ON) && (OptionalValid == NO_TRANSITION)) { Appli_LightPwmValue.IntensityValue = PWM_TIME_PERIOD; Light_UpdateLedValue(LOAD_STATE , Appli_LightPwmValue); @@ -120,18 +139,15 @@ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam, BSP_LED_Off(LED_BLUE); } } + + TRACE_M(TF_GENERIC,"Generic_OnOff_Set callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8202%02hx!\n\r",AppliOnOffSet[elementIndex].Present_OnOff); - TRACE_M(TF_SERIAL_CTRL,"#8202%02hx!\n\r",AppliOnOffSet.Present_OnOff); + NvmStatePowerFlag_Set(GENERIC_ON_OFF_NVM_FLAG, elementIndex); - /* set the flag value for NVM store */ - RestoreFlag = GENERIC_ON_OFF_NVM_FLAG; - - AppliNvm_SaveMessageParam(); - return MOBLE_RESULT_SUCCESS; } - /******************************************************************************/ #endif /* #ifdef ENABLE_GENERIC_MODEL_SERVER_ONOFF */ /******************************************************************************/ @@ -142,15 +158,20 @@ MOBLE_RESULT Appli_Generic_OnOff_Set(Generic_OnOffStatus_t* pGeneric_OnOffParam, * when Generic OnOff message is received * @param pOnOff_status: Pointer to the parameters received for message * @param plength: length of the data +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_OnOff_Status(MOBLEUINT8 const *pOnOff_status, MOBLEUINT32 plength) +MOBLE_RESULT Appli_Generic_OnOff_Status(MOBLEUINT8 const *pOnOff_status, MOBLEUINT32 plength, + MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { MOBLEUINT8 i; - TRACE_M(TF_GENERIC,"Appli_Generic_OnOff_Status callback received \r\n"); + TRACE_M(TF_GENERIC,"Generic_OnOff_Status callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8204!\r\n"); - TRACE_M(TF_SERIAL_CTRL,"#8204! \n\r"); for(i = 0; i < plength; i++) { if(i == 0) @@ -164,6 +185,7 @@ MOBLE_RESULT Appli_Generic_OnOff_Status(MOBLEUINT8 const *pOnOff_status, MOBLEUI return MOBLE_RESULT_SUCCESS; } + /******************************************************************************/ #ifdef ENABLE_GENERIC_MODEL_SERVER_LEVEL /******************************************************************************/ @@ -173,21 +195,26 @@ MOBLE_RESULT Appli_Generic_OnOff_Status(MOBLEUINT8 const *pOnOff_status, MOBLEUI * when Generic Level message is received * @param plevelParam: Pointer to the parameters message * @param OptionalValid: Flag to inform about the validity of optional parameters +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ MOBLE_RESULT Appli_Generic_Level_Set(Generic_LevelStatus_t* plevelParam, - MOBLEUINT8 OptionalValid) + MOBLEUINT8 OptionalValid,MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex) { MOBLEUINT16 duty; static MOBLEUINT16 previousIntensity = 0; - AppliLevelSet.Present_Level16= plevelParam->Present_Level16; - if(AppliLevelSet.Present_Level16 <= 0) + AppliLevelSet[elementIndex].Present_Level16= plevelParam->Present_Level16; + if(AppliLevelSet[elementIndex].Present_Level16 <= 0) { - AppliLevelSet.Present_Level16 = 0; + AppliLevelSet[elementIndex].Present_Level16 = 0; } - IntensityValue = AppliLevelSet.Present_Level16; + IntensityValue = AppliLevelSet[elementIndex].Present_Level16; if(((IntensityValue > previousIntensity) && (IntensityValue <PWM_TIME_PERIOD)) || IntensityValue == INTENSITY_LEVEL_ZERO) @@ -200,49 +227,42 @@ MOBLE_RESULT Appli_Generic_Level_Set(Generic_LevelStatus_t* plevelParam, } previousIntensity = IntensityValue; - if(AppliLevelSet.Present_Level16 < 0x00) + if(AppliLevelSet[elementIndex].Present_Level16 < 0x00) { - AppliLevelSet.Present_Level16 = 0; + AppliLevelSet[elementIndex].Present_Level16 = 0; } - duty = PwmValueMapping(AppliLevelSet.Present_Level16 , 0x7FFF ,0x0000); + duty = PwmValueMapping(AppliLevelSet[elementIndex].Present_Level16 , 0x7FFF ,0x0000); Appli_LightPwmValue.IntensityValue = duty; Light_UpdateLedValue(LOAD_STATE , Appli_LightPwmValue); - TRACE_M(TF_SERIAL_CTRL,"#8206%04hx!\n\r",AppliLevelSet.Present_Level16); - - /* set the flag value for NVM store */ - RestoreFlag = GENERIC_LEVEL_NVM_FLAG; - - AppliNvm_SaveMessageParam(); - - /* For demo, if Level is more than 100, switch ON the LED */ - if(AppliLevelSet.Present_Level16 >= 50) - { - BSP_LED_On(LED_BLUE); - } - else - { - BSP_LED_Off(LED_BLUE); - } + TRACE_M(TF_GENERIC,"Generic_Level_Set callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8206!\r\n"); + NvmStatePowerFlag_Set(GENERIC_LEVEL_NVM_FLAG, elementIndex); + return MOBLE_RESULT_SUCCESS; } + /** * @brief Appli_Generic_Delta_Set: This function is callback for Application * when Generic Level Delta message is received * @param pdeltalevelParam: Pointer to the parameters message * @param OptionalValid: Flag to inform about the validity of optional parameters +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_Delta_Set(Generic_LevelStatus_t* pdeltalevelParam, - MOBLEUINT8 OptionalValid) +MOBLE_RESULT Appli_Generic_LevelDelta_Set(Generic_LevelStatus_t* pdeltalevelParam, + MOBLEUINT8 OptionalValid,MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex) { - - AppliLevelSet.Present_Level16 = pdeltalevelParam->Present_Level16; + AppliLevelSet[elementIndex].Present_Level16 = pdeltalevelParam->Present_Level16; /* For demo, if Level is more than 50, switch ON the LED */ - if (AppliLevelSet.Present_Level16 >= 50) + if (AppliLevelSet[elementIndex].Present_Level16 >= 50) { Appli_LightPwmValue.IntensityValue = PWM_TIME_PERIOD; Light_UpdateLedValue(LOAD_STATE , Appli_LightPwmValue); @@ -253,32 +273,43 @@ MOBLE_RESULT Appli_Generic_Delta_Set(Generic_LevelStatus_t* pdeltalevelParam, Light_UpdateLedValue(RESET_STATE , Appli_LightPwmValue); BSP_LED_Off(LED_BLUE); } - TRACE_M(TF_SERIAL_CTRL,"#8206!\n\r"); + + TRACE_M(TF_GENERIC,"Generic_LevelDelta_Set callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8209!\r\n"); + return MOBLE_RESULT_SUCCESS; } /** -* @brief Appli_Generic_Move_Set: This function is callback for Application +* @brief Appli_Generic_LevelMove_Set: This function is callback for Application * when Generic Level Move message is received * @param pdeltaMoveParam: Pointer to the parameters message * @param OptionalValid: Flag to inform about the validity of optional parameters +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_Move_Set(Generic_LevelStatus_t* pdeltaMoveParam, - MOBLEUINT8 OptionalValid) +MOBLE_RESULT Appli_Generic_LevelMove_Set(Generic_LevelStatus_t* pdeltaMoveParam, + MOBLEUINT8 OptionalValid, MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex) { - AppliLevelSet.Last_delta_level = pdeltaMoveParam->Last_delta_level; - AppliLevelSet.Last_Level_TID = pdeltaMoveParam->Last_Level_TID; - AppliLevelSet.Last_Present_Level16 = pdeltaMoveParam->Last_Present_Level16; - AppliLevelSet.Present_Level16 = pdeltaMoveParam->Present_Level16; - AppliLevelSet.RemainingTime = pdeltaMoveParam->RemainingTime; - AppliLevelSet.Target_Level16 = pdeltaMoveParam->Target_Level16; +// if(OptionalValid == 1) +// { + AppliLevelSet[elementIndex].Last_delta_level = pdeltaMoveParam->Last_delta_level; + AppliLevelSet[elementIndex].Last_Level_TID = pdeltaMoveParam->Last_Level_TID; + AppliLevelSet[elementIndex].Last_Present_Level16 = pdeltaMoveParam->Last_Present_Level16; + AppliLevelSet[elementIndex].Present_Level16 = pdeltaMoveParam->Present_Level16; + AppliLevelSet[elementIndex].RemainingTime = pdeltaMoveParam->RemainingTime; + AppliLevelSet[elementIndex].Target_Level16 = pdeltaMoveParam->Target_Level16; +// } - TRACE_M(TF_SERIAL_CTRL,"#8206!\n\r"); - - return MOBLE_RESULT_SUCCESS; + TRACE_M(TF_GENERIC,"Generic_LevelMove_Set callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#820B! \r\n"); + return MOBLE_RESULT_SUCCESS; } @@ -291,39 +322,45 @@ MOBLE_RESULT Appli_Generic_Move_Set(Generic_LevelStatus_t* pdeltaMoveParam, * when Generic Level Move message is received * @param plevel_status: Pointer to the parameters message * @param plength: length of data +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ MOBLE_RESULT Appli_Generic_Level_Status(MOBLEUINT8 const *plevel_status, - MOBLEUINT32 plength) + MOBLEUINT32 plength, + MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex) { -#ifdef CFG_DEBUG_TRACE +#if ( CFG_DEBUG_TRACE != 0 ) MOBLEUINT8 i; MOBLEUINT8 level = 0; -#endif - - TRACE_M(TF_GENERIC,"Generic_Level_Status callback received \r\n"); +#endif - TRACE_M(TF_SERIAL_CTRL,"#8208! \n\r"); + TRACE_M(TF_GENERIC,"Generic_Level_Status callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8208! \r\n"); -#ifdef CFG_DEBUG_TRACE +#if ( CFG_DEBUG_TRACE != 0 ) for(i = 0; i < plength; i++) { if((i == 0) || (i == 2)) level = plevel_status[i]; else if(i == 1) - TRACE_M(TF_GENERIC,"Present Level value: %d\n\r", + TRACE_M(TF_SERIAL_CTRL,"Present Level value: %d\n\r", (plevel_status[i]<<8)|level); else if(i == 3) - TRACE_M(TF_GENERIC,"Target Level value: %d\n\r", + TRACE_M(TF_SERIAL_CTRL,"Target Level value: %d\n\r", (plevel_status[i]<<8)|level); else if(i == 4) - TRACE_M(TF_GENERIC,"Remaining Time value: %d\n\r", plevel_status[i]); + TRACE_M(TF_SERIAL_CTRL,"Remaining Time value: %d\n\r", plevel_status[i]); } -#endif +#endif + return MOBLE_RESULT_SUCCESS; } - + /******************************************************************************/ #ifdef ENABLE_GENERIC_MODEL_SERVER_POWER_ONOFF /******************************************************************************/ @@ -333,17 +370,26 @@ MOBLE_RESULT Appli_Generic_Level_Status(MOBLEUINT8 const *plevel_status, * when Generic Power on off set message is received * @param pPowerOnOffParam: Pointer to the parameters message * @param OptionalValid: Flag to inform about the validity of optional parameters +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ MOBLE_RESULT Appli_Generic_PowerOnOff_Set(Generic_PowerOnOffParam_t* pPowerOnOffParam, - MOBLEUINT8 OptionalValid) + MOBLEUINT8 OptionalValid, MOBLEUINT16 dstPeer, + MOBLEUINT8 elementIndex) { - AppliPowerOnSet.PowerOnState = pPowerOnOffParam->PowerOnOffState; - - TRACE_M(TF_SERIAL_CTRL,"#8213!\n\r"); + AppliPowerOnSet[elementIndex].PowerOnState = pPowerOnOffParam->PowerOnOffState; + + TRACE_M(TF_GENERIC,"Generic_PowerOnOff_Set callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8213!\r\n"); - /* set the flag value for NVM store */ - //RestoreFlag = GENERIC_ON_OFF_NVM_FLAG; + if(AppliPowerOnSet[elementIndex].PowerOnState == GENERIC_POWER_ON_STATE) + { + /* set the flag value for NVM store */ + RestoreFlag = GENERIC_ON_OFF_NVM_FLAG; + } AppliNvm_SaveMessageParam(); @@ -359,17 +405,20 @@ MOBLE_RESULT Appli_Generic_PowerOnOff_Set(Generic_PowerOnOffParam_t* pPowerOnOff * when Generic Power on off set message is received * @param powerOnOff_status: Pointer to the parameters message * @param plength: length of data +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_PowerOnOff_Status(MOBLEUINT8 const *powerOnOff_status , - MOBLEUINT32 plength) +MOBLE_RESULT Appli_Generic_PowerOnOff_Status(MOBLEUINT8 const *powerOnOff_status,\ + MOBLEUINT32 plength, MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { MOBLEUINT8 i; - TRACE_M(TF_GENERIC,"Generic_PowerOnOff_Status callback received \r\n"); + TRACE_M(TF_GENERIC,"Generic_PowerOnOff_Status callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8212!\r\n"); - TRACE_M(TF_SERIAL_CTRL,"#8212! \n\r"); - for(i = 0; i < plength; i++) { if(i == 0) @@ -390,37 +439,43 @@ MOBLE_RESULT Appli_Generic_PowerOnOff_Status(MOBLEUINT8 const *powerOnOff_status * when Generic Power on off set message is received * @param pDefaultTimeParam: Pointer to the parameters message * @param OptionalValid: Flag to inform about the validity of optional parameters +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ MOBLE_RESULT Appli_Generic_DefaultTransitionTime_Set(Generic_DefaultTransitionParam_t* pDefaultTimeParam, - MOBLEUINT8 OptionalValid) + MOBLEUINT8 OptionalValid, MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - AppliDefaultTransitionSet.DefaultTransitionTime = pDefaultTimeParam->DefaultTransitionTime; + AppliDefaultTransitionSet[elementIndex].DefaultTransitionTime = pDefaultTimeParam->DefaultTransitionTime; + TRACE_M(TF_GENERIC,"Generic_DefaultTransitionTime_Set callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#820E!\r\n"); return MOBLE_RESULT_SUCCESS; } - /******************************************************************************/ #endif /* ENABLE_GENERIC_MODEL_SERVER_DEFAULT_TRANSITION_TIME */ /******************************************************************************/ - /** * @brief Appli_Generic_DefaultTransitionTime_Status: This function is callback for Application * when Generic Power on off set message is received * @param pTransition_status: Pointer to the parameters message * @param plength: length of data +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_DefaultTransitionTime_Status(MOBLEUINT8 const *pTransition_status , - MOBLEUINT32 plength) +MOBLE_RESULT Appli_Generic_DefaultTransitionTime_Status(MOBLEUINT8 const *pTransition_status , MOBLEUINT32 plength,MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - TRACE_M(TF_GENERIC,"Generic_DefaultTransitionTime_Status callback received \r\n"); - - TRACE_M(TF_SERIAL_CTRL,"#8210! \n\r"); + TRACE_M(TF_GENERIC,"Generic_DefaultTransitionTime_Status callback received for element %d \r\n", elementIndex); + TRACE_M(TF_SERIAL_CTRL,"#8210!\r\n"); return MOBLE_RESULT_SUCCESS; } @@ -431,83 +486,99 @@ MOBLE_RESULT Appli_Generic_DefaultTransitionTime_Status(MOBLEUINT8 const *pTrans * @brief Appli_Generic_GetOnOffState: This function is callback for Application * when Generic on off status message is to be provided * @param pOnOff_status: Pointer to the status message +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_GetOnOffStatus(MOBLEUINT8* pOnOff_Status) +MOBLE_RESULT Appli_Generic_GetOnOffStatus(MOBLEUINT8* pOnOff_Status,MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - *pOnOff_Status = AppliOnOffSet.Present_OnOff; - TRACE_M(TF_SERIAL_CTRL,"Generic Get OnOff Status: Status %d!\n\r", - AppliOnOffSet.Present_OnOff); - + *pOnOff_Status = AppliOnOffSet[elementIndex].Present_OnOff; return MOBLE_RESULT_SUCCESS; } + /** * @brief Appli_Generic_GetOnOffValue: This function is callback for Application to get the PWM value for the generic on off * @param pOnOff_Value: Pointer to the status message +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_GetOnOffValue(MOBLEUINT8* pOnOff_Value) +MOBLE_RESULT Appli_Generic_GetOnOffValue(MOBLEUINT8* pOnOff_Value, MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - *pOnOff_Value = AppliOnOffSet.Present_OnOffValue; - *(pOnOff_Value+1) = AppliOnOffSet.Present_OnOffValue >> 8; - *(pOnOff_Value+2) = AppliOnOffSet.TargetValue; - *(pOnOff_Value+3) = AppliOnOffSet.TargetValue >> 8; - TRACE_M(TF_SERIAL_CTRL,"Generic Get OnOff Value: Value %d!\n\r", - AppliOnOffSet.Present_OnOffValue); + *pOnOff_Value = AppliOnOffSet[elementIndex].Present_OnOffValue; + *(pOnOff_Value+1) = AppliOnOffSet[elementIndex].Present_OnOffValue >> 8; + *(pOnOff_Value+2) = AppliOnOffSet[elementIndex].TargetValue; + *(pOnOff_Value+3) = AppliOnOffSet[elementIndex].TargetValue >> 8; return MOBLE_RESULT_SUCCESS; } + /** * @brief Appli_Generic_GetLevelStatus: This function is callback for Application when Generic Level status message is to be provided * @param pLevel_status: Pointer to the status message +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_GetLevelStatus(MOBLEUINT8* pLevel_Status) +MOBLE_RESULT Appli_Generic_GetLevelStatus(MOBLEUINT8* pLevel_Status, MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - *pLevel_Status = AppliLevelSet.Present_Level16; - *(pLevel_Status+1) = AppliLevelSet.Present_Level16 >> 8; - *(pLevel_Status+2) = AppliLevelSet.Target_Level16; - *(pLevel_Status+3) = AppliLevelSet.Target_Level16 >> 8; -// TRACE_M(TF_SERIAL_CTRL,"Generic Get Level Status: Value %d!\n\r", -// *pLevel_Status); + *pLevel_Status = AppliLevelSet[elementIndex].Present_Level16; + *(pLevel_Status+1) = AppliLevelSet[elementIndex].Present_Level16 >> 8; + *(pLevel_Status+2) = AppliLevelSet[elementIndex].Target_Level16; + *(pLevel_Status+3) = AppliLevelSet[elementIndex].Target_Level16 >> 8; return MOBLE_RESULT_SUCCESS; } + /** * @brief Appli_Generic_GetPowerOnOffStatus: This function is callback for Application * when Generic Get Power status message is to be provided * @param pLevel_status: Pointer to the status message +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_GetPowerOnOffStatus(MOBLEUINT8* pPower_Status) +MOBLE_RESULT Appli_Generic_GetPowerOnOffStatus(MOBLEUINT8* pPower_Status, MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - *pPower_Status = AppliPowerOnSet.PowerOnState; - TRACE_M(TF_SERIAL_CTRL,"Generic Get OnOff Status: Status %d!\n\r", - AppliPowerOnSet.PowerOnState); + + *pPower_Status = AppliPowerOnSet[elementIndex].PowerOnState; return MOBLE_RESULT_SUCCESS; } + /** * @brief Appli_Generic_GetDefaultTransitionStatus: This function is callback for * Application when Generic Level status message is to be provided * @param pTransition_Status: Pointer to the status message +* @param dstPeer: destination send by peer for this node. It can be a +* unicast or group address +* @param elementIndex: index of the element received from peer for this node which +* is elementNumber-1 * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_Generic_GetDefaultTransitionStatus(MOBLEUINT8* pTransition_Status) +MOBLE_RESULT Appli_Generic_GetDefaultTransitionStatus(MOBLEUINT8* pTransition_Status,MOBLEUINT16 dstPeer, MOBLEUINT8 elementIndex) { - *pTransition_Status = AppliDefaultTransitionSet.DefaultTransitionTime; - TRACE_M(TF_SERIAL_CTRL,"Get Default Transition Status: Status %d!\n\r", - AppliDefaultTransitionSet.DefaultTransitionTime); + + *pTransition_Status = AppliDefaultTransitionSet[elementIndex].DefaultTransitionTime; return MOBLE_RESULT_SUCCESS; } + /** * @} */ @@ -516,5 +587,5 @@ MOBLE_RESULT Appli_Generic_GetDefaultTransitionStatus(MOBLEUINT8* pTransition_St * @} */ -/******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/ +/******************* (C) COPYRIGHT 2020 STMicroelectronics *****END OF FILE****/ |