/** ****************************************************************************** * @file LmhpPackagesRegistration.c * @author MCD Application Team * @brief Implements the Packages Registration Agent ****************************************************************************** * @attention * * Copyright (c) 2020(-2021) STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "platform.h" #include "LmhpPackagesRegistration.h" #include "LmHandler.h" #if (defined (LORAWAN_DATA_DISTRIB_MGT) && (LORAWAN_DATA_DISTRIB_MGT == 1)) #include "LmhpClockSync.h" #include "LmhpRemoteMcastSetup.h" #include "LmhpFragmentation.h" #include "frag_decoder_if.h" #include "LmhpFirmwareManagement.h" #endif /* LORAWAN_DATA_DISTRIB_MGT */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Exported functions ---------------------------------------------------------*/ LmHandlerErrorStatus_t LmhpPackagesRegistrationInit( Version_t *fwVersion ) { #if (defined (LORAWAN_DATA_DISTRIB_MGT) && (LORAWAN_DATA_DISTRIB_MGT == 1)) if( LmHandlerPackageRegister( PACKAGE_ID_CLOCK_SYNC, NULL ) != LORAMAC_HANDLER_SUCCESS ) { return LORAMAC_HANDLER_ERROR; } else if( LmHandlerPackageRegister( PACKAGE_ID_REMOTE_MCAST_SETUP, NULL ) != LORAMAC_HANDLER_SUCCESS ) { return LORAMAC_HANDLER_ERROR; } else if( LmHandlerPackageRegister( PACKAGE_ID_FRAGMENTATION, ( LmhpFragmentationParams_t * )&FRAG_DECODER_IF_FragmentationParams ) != LORAMAC_HANDLER_SUCCESS ) { return LORAMAC_HANDLER_ERROR; } #if (LORAWAN_PACKAGES_VERSION == 2) else if( LmHandlerPackageRegister( PACKAGE_ID_FIRMWARE_MANAGEMENT, fwVersion ) != LORAMAC_HANDLER_SUCCESS ) { return LORAMAC_HANDLER_ERROR; } #endif /* LORAWAN_PACKAGES_VERSION */ #endif /* LORAWAN_DATA_DISTRIB_MGT */ return LORAMAC_HANDLER_SUCCESS; } LmHandlerErrorStatus_t LmhpPackagesRegister( uint8_t id, LmhPackage_t **package ) { #if (defined (LORAWAN_DATA_DISTRIB_MGT) && (LORAWAN_DATA_DISTRIB_MGT == 1)) if( package == NULL ) { return LORAMAC_HANDLER_ERROR; } switch( id ) { case PACKAGE_ID_CLOCK_SYNC: { *package = LmhpClockSyncPackageFactory(); break; } case PACKAGE_ID_REMOTE_MCAST_SETUP: { *package = LmhpRemoteMcastSetupPackageFactory(); break; } case PACKAGE_ID_FRAGMENTATION: { *package = LmhpFragmentationPackageFactory(); break; } case PACKAGE_ID_FIRMWARE_MANAGEMENT: { *package = LmhpFirmwareManagementPackageFactory(); break; } } return LORAMAC_HANDLER_SUCCESS; #else return LORAMAC_HANDLER_ERROR; #endif /* LORAWAN_DATA_DISTRIB_MGT */ }