/*
 * PE43711.c
 *
 *  Created on: 2019. 6. 28.
 *      Author: parkyj
 */
 #include "PE43711.h"

PE43711_st *Atten_1_8Ghz; 
PE43711_st *Atten_2_1Ghz; 

 
void PE43711_PinInit(void){
    Atten_1_8Ghz->ATT_EN_1_8G_DL1_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_DL1_PORT = GPIOB;
    
    Atten_1_8Ghz->ATT_EN_1_8G_DL2_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_DL2_PORT = GPIOB;
    
    Atten_1_8Ghz->ATT_EN_1_8G_UL1_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_UL1_PORT = GPIOB;
    
    Atten_1_8Ghz->ATT_EN_1_8G_DL1_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_DL1_PORT = GPIOB;
    
    Atten_1_8Ghz->ATT_EN_1_8G_UL2_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_UL2_PORT = GPIOB;

    Atten_1_8Ghz->ATT_EN_1_8G_UL3_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_UL3_PORT = GPIOB;
    
    Atten_1_8Ghz->ATT_EN_1_8G_UL4_PIN = GPIO_PIN_1;
    Atten_1_8Ghz->ATT_EN_1_8G_UL4_PORT = GPIOB;


    Atten_2_1Ghz->ATT_EN_1_8G_DL1_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_DL1_PORT = GPIOB;

    Atten_2_1Ghz->ATT_EN_1_8G_DL2_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_DL2_PORT = GPIOB;

    Atten_2_1Ghz->ATT_EN_1_8G_UL1_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_UL1_PORT = GPIOB;

    Atten_2_1Ghz->ATT_EN_1_8G_DL1_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_DL1_PORT = GPIOB;

    Atten_2_1Ghz->ATT_EN_1_8G_UL2_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_UL2_PORT = GPIOB;

    Atten_2_1Ghz->ATT_EN_1_8G_UL3_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_UL3_PORT = GPIOB;

    Atten_2_1Ghz->ATT_EN_1_8G_UL4_PIN = GPIO_PIN_1;
    Atten_2_1Ghz->ATT_EN_1_8G_UL4_PORT = GPIOB;
    
}

void PE43711_atten_ctrl(PE43711_st* Atten_xGhz ,double data){
    uint8_t i = 0;
    uint8_t temp = 0;
    data = 4 * data;
    temp = (uint8_t)data;
    
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
    HAL_Delay(1);
    for(i = 0; i < 8; i++){
        if((uint8_t)temp & 0x01){
           HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);//DATA
        }
           else{
           HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//DATA
           }

		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);//CLOCK
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);//CLOCK
		HAL_Delay(1);
		temp >>= 1;
    }
    
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_RESET);//CLOCK
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//DATA
    HAL_Delay(5);
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);//LE
    HAL_Delay(1);
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
}
