#include "platform.h"
#include <stdint.h>
#include "./../../stm32f429xx.h"
#include "./../stm32_api/gpio_api.h"
//#include "./../../driver/GPIO/gpio.h"
#include "bmc_main.h"
#include <stdio.h>

void platform_init(void)
{
	gpio_data_t gpin_data;
	uint8_t slotID = 0;

	printf("---> init platform!\n");

	//init debug led, GPIO_D12
	gpin_data.port = GPIOD;	
	gpin_data.pin = GPIO_PIN_12;
	set_gpio_push_pull_output(&gpin_data);

	//get slot ID
	//GA0
	gpin_data.port = GPIOA;
	gpin_data.pin = GPIO_PIN_9;
	set_gpio_input(&gpin_data);
	set_gpio_pull_up(&gpin_data);
	get_gpio_value(&gpin_data);
	slotID |= (gpin_data.data&0x01);
	//GA1
	gpin_data.port = GPIOC;
	gpin_data.pin = GPIO_PIN_6;
	set_gpio_input(&gpin_data);
	set_gpio_pull_up(&gpin_data);
	get_gpio_value(&gpin_data);
	slotID |= ((gpin_data.data&0x01)<<1);
	//GA2
	gpin_data.port = GPIOA;
	gpin_data.pin = GPIO_PIN_10;
	set_gpio_input(&gpin_data);
	set_gpio_pull_up(&gpin_data);
	get_gpio_value(&gpin_data);
	slotID |= ((gpin_data.data&0x01)<<2);
	//GA3
	gpin_data.port = GPIOG;
	gpin_data.pin = GPIO_PIN_6;
	set_gpio_input(&gpin_data);
	set_gpio_pull_up(&gpin_data);
	get_gpio_value(&gpin_data);
	slotID |= ((gpin_data.data&0x01)<<3);
	//GA4
	gpin_data.port = GPIOA;
	gpin_data.pin = GPIO_PIN_12;
	set_gpio_input(&gpin_data);
	set_gpio_pull_up(&gpin_data);
	get_gpio_value(&gpin_data);
	slotID |= ((gpin_data.data&0x01)<<4);
	g_BMCInfo.slotID = slotID;
	printf("---> slot ID:%#x\n",g_BMCInfo.slotID);

	//
}


