#include"segment.h"
extern SPI_HandleTypeDef hspi1;
unsigned long int digits[MAX_DIGIT],digit[MAX_DIGIT];
uint8_t control[1],signal[1],Led[1],i,sequence;
void print(unsigned long int num)
{
for(i=0;num!=0;i++)
	{
	digits[i]=num%10;
	digit[i]=seven_segment(digits[i]);
	num=num/10;
	sequence++;
	}
	/* main part display number*/
	for(i=0;i<sequence;i++)
	{	
	  control[0]=0x00;
		HAL_SPI_Transmit(&hspi1,control,1,100);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET);
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET);
		signal[0]= digit[i];
		HAL_SPI_Transmit(&hspi1,signal ,1,100);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4,GPIO_PIN_SET);
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_4,GPIO_PIN_RESET);
		control[0]=(1<<i);
		HAL_SPI_Transmit(&hspi1,control,1,100);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET);
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET);
		control[0]=0x00;
		HAL_SPI_Transmit(&hspi1, control,1,100);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET);
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET);
	}
	sequence=0;
}

unsigned char seven_segment(unsigned char value)
{
unsigned char SEVEN_value=0;
switch(value)
	{
	// --- Sequence |DP|G|F|E|D|C|B|A|
	case 0: SEVEN_value=0b11000000;
			break;
	case 1: SEVEN_value=0b11111001;
			break;
	case 2: SEVEN_value=0b10100100;
			break;
	case 3: SEVEN_value=0b10110000;
			break;
	case 4: SEVEN_value=0b10011001;
			break;
	case 5: SEVEN_value=0b10010010;
			break;
	case 6: SEVEN_value=0b10000010;
			break;
	case 7: SEVEN_value=0b11111000;
			break;
	case 8: SEVEN_value=0b10000000;
			break;
	case 9: SEVEN_value=0b10010000;
			break;
	}
return (SEVEN_value);
}
void LED_ON(uint8_t value)
{
 switch(value)
	{
	case 0: Led[0]=POWER_LED;
			break;
	case 1: Led[0]=LED_STATUS_1;
			break;
	case 2: Led[0]=LED_STATUS_2;
			break;
	case 3: Led[0]=LED_STATUS_3;
			break;
	}
    HAL_SPI_Transmit(&hspi1, Led,1,100);
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET);
	HAL_Delay(1);
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET);
}