#ifndef HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_
#define HOSTED_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_

#include "commonObjects.h"
#include <fsfw/objectmanager/frameworkObjects.h>
#include <cstdint>

// The objects will be instantiated in the ID order
namespace objects {
	enum sourceObjects: uint32_t {
	    /* 0x53 reserved for FSFW */
	    FW_ADDRESS_START = PUS_SERVICE_1_VERIFICATION,
	    FW_ADDRESS_END = TIME_STAMPER,

		CCSDS_IP_CORE_BRIDGE = 0x50000500,

		PUS_SERVICE_6 = 0x51000500,

		TM_FUNNEL = 0x52000002,

		/* 0x49 ('I') for Communication Interfaces **/
		ARDUINO_COM_IF = 0x49000001,
		CSP_COM_IF = 0x49000002,
		I2C_COM_IF = 0x49000003,
		UART_COM_IF = 0x49000004,
		SPI_COM_IF = 0x49000005,

		/* 0x47 ('G') for Gpio Interfaces */
		GPIO_IF = 0x47000001,

		/* Custom device handler */
		PCDU_HANDLER = 0x44001000,
		SOLAR_ARRAY_DEPL_HANDLER = 0x44001001,
		SYRLINKS_HK_HANDLER = 0x44001002,

		/* 0x54 ('T') for thermal objects */
		HEATER_HANDLER = 0x54000003,
		/**
		 * Not yet specified which pt1000 will measure which device/location in the satellite.
		 * Therefore object ids are named according to the IC naming of the RTDs in the schematic.
		 */
		RTD_IC3 = 0x54000004,
		RTD_IC4 = 0x54000005,
		RTD_IC5 = 0x54000006,
		RTD_IC6 = 0x54000007,
		RTD_IC7 = 0x54000008,
		RTD_IC8 = 0x54000009,
		RTD_IC9 = 0x5400000A,
		RTD_IC10 = 0x5400000B,
		RTD_IC11 = 0x5400000C,
		RTD_IC12 = 0x5400000D,
		RTD_IC13 = 0x5400000E,
		RTD_IC14 = 0x5400000F,
		RTD_IC15 = 0x5400001F,
		RTD_IC16 = 0x5400002F,
		RTD_IC17 = 0x5400003F,
		RTD_IC18 = 0x5400004F,

		RAD_SENSOR = 0x54000050,

		/* 0x54 ('T') for test handlers */
        TEST_TASK = 0x54694269,
        LIBGPIOD_TEST = 0x54123456,
        SPI_TEST = 0x54000010,
        UART_TEST = 0x54000020,
        DUMMY_INTERFACE = 0x5400CAFE,
        DUMMY_HANDLER = 0x5400AFFE,
        P60DOCK_TEST_TASK = 0x00005060
	};
}

#endif /* BSP_CONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ */