/*
 *
 *    Copyright (c) 2020-2022 Project CHIP Authors
 *    Copyright (c) 2020 Google LLC.
 *    All rights reserved.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

/**
 *    @file
 *          Platform-specific configuration overrides for the CHIP System
 *          Layer on NXP Platforms.
 *
 */

#pragma once

#include <stdint.h>

namespace chip {
namespace DeviceLayer {
struct ChipDeviceEvent;
} // namespace DeviceLayer
} // namespace chip

// ==================== Platform Adaptations ====================

#ifndef CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS
#define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS 1
#endif // CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS

#ifndef CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME
#define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME 1
#endif // CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME

#ifndef CHIP_SYSTEM_CONFIG_LWIP_EVENT_TYPE
#define CHIP_SYSTEM_CONFIG_LWIP_EVENT_TYPE int
#endif // CHIP_SYSTEM_CONFIG_LWIP_EVENT_TYPE

#ifndef CHIP_SYSTEM_CONFIG_LWIP_EVENT_OBJECT_TYPE
#define CHIP_SYSTEM_CONFIG_LWIP_EVENT_OBJECT_TYPE const struct ::chip::DeviceLayer::ChipDeviceEvent *
#endif // CHIP_SYSTEM_CONFIG_LWIP_EVENT_OBJECT_TYPE

#ifndef CHIP_SYSTEM_CONFIG_ERROR_TYPE
#define CHIP_SYSTEM_CONFIG_ERROR_TYPE int32_t
#endif // CHIP_SYSTEM_CONFIG_ERROR_TYPE

#ifndef CHIP_SYSTEM_CONFIG_NO_ERROR
#define CHIP_SYSTEM_CONFIG_NO_ERROR 0
#endif // CHIP_SYSTEM_CONFIG_NO_ERROR

#ifndef CHIP_SYSTEM_CONFIG_ERROR_MIN
#define CHIP_SYSTEM_CONFIG_ERROR_MIN 7000000
#endif // CHIP_SYSTEM_CONFIG_ERROR_MIN

#ifndef CHIP_SYSTEM_CONFIG_ERROR_MAX
#define CHIP_SYSTEM_CONFIG_ERROR_MAX 7000999
#endif // CHIP_SYSTEM_CONFIG_ERROR_MAX

#ifndef _CHIP_SYSTEM_CONFIG_ERROR
#define _CHIP_SYSTEM_CONFIG_ERROR(e) (CHIP_SYSTEM_CONFIG_ERROR_MIN + (e))
#endif // _CHIP_SYSTEM_CONFIG_ERROR

#ifndef CHIP_SYSTEM_LWIP_ERROR_MIN
#define CHIP_SYSTEM_LWIP_ERROR_MIN 3000000
#endif // CHIP_SYSTEM_LWIP_ERROR_MIN

#ifndef CHIP_SYSTEM_LWIP_ERROR_MAX
#define CHIP_SYSTEM_LWIP_ERROR_MAX 3000128
#endif // CHIP_SYSTEM_LWIP_ERROR_MAX

// ========== Platform-specific Configuration Overrides =========

#ifndef CHIP_SYSTEM_CONFIG_NUM_TIMERS
#define CHIP_SYSTEM_CONFIG_NUM_TIMERS 32
#endif // CHIP_SYSTEM_CONFIG_NUM_TIMERS
