#include "pos_id.h"
#include "riu_common.h"
#include <stdio.h>

// ȡ10λλֵ
static unsigned short GetPosCode(void)
{
    unsigned short code = 0;
#if SIMULATOR_MODE
    // ģʽȡģGPIOֵ
    // GPIO16~25ӦD0~D916λȡ10λ
    code = (sim_gpio_a_input >> 16) & 0x03FF;
#else
    // ʵӲģʽȡGPIOA˿ڼĴ
    code = (GpioDataRegs.GPADAT.all >> 16) & 0x03FF;
#endif
    return code;
}

// λʶ
void PosId_Init(void)
{
    unsigned short pos_code = 0;
    printf("ʼλʶ...\r\n");

    while(1)
    {
        pos_code = GetPosCode();

        // ȶĵ2ĺϷλ
        switch(pos_code)
        {
            case 581:  // RIU1A
                g_riu_pos_no = 1;
                g_bus_set_val = 1;
                break;
            case 582:  // RIU1B
                g_riu_pos_no = 2;
                g_bus_set_val = 1;
                break;
            case 71:   // RIU1C
                g_riu_pos_no = 3;
                g_bus_set_val = 1;
                break;
            case 586:  // RIU2B
                g_riu_pos_no = 4;
                g_bus_set_val = 2;
                break;
            default:   // Ƿλ
                g_riu_pos_no = 0;
                printf("λʶʧܣǰֵ%d...\r\n", pos_code);
                break;
        }

        // ʶɹ˳ѭ
        if(g_riu_pos_no != 0)
        {
            printf("λʶɹǰλţ%dֵ%d\r\n", g_riu_pos_no, g_bus_set_val);
            break;
        }
    }
}
