コード例 #1
0
    int StatsTable::GetCounterValue(const std::string& name, int pid)
    {
        if(!impl_)
        {
            return 0;
        }

        int row = FindCounter(name);
        if(!row)
        {
            return 0;
        }
        return GetRowValue(row, pid);
    }
コード例 #2
0
ファイル: Key.c プロジェクト: glocklueng/ac_charging
//==============================================================================
void KeyBoard_Scan(void)
{
    uint8_t i;
    uint32_t tmp;
//    if(Sys_Start_Flag == 0)return;
    if(KeyBoardType.flagfull == 1)return;
    if(SysTickCnt - KeyBoardType.scanticks < KEYSCANDLY)return;
    KeyBoardType.scanticks = SysTickCnt;

    switch(KeyBoardType.status) {
    case 0:
        SetRowInput();
        KeyBoardType.status++;
        break;
    case 1:
        tmp = GetRowValue();
        if(tmp != 0)
        {
            KeyBoardType.code = tmp;
            KeyBoardType.status++;
        }
        else
        {
            KeyBoardType.code = 0;
        }
        KeyBoardType.keycnt = 0;
        break;
    case 2:
        tmp = GetRowValue();
        if(tmp == KeyBoardType.code)
        {
            if(++KeyBoardType.keycnt > KEYSCANCNT)
            {
                KeyBoardType.status++;
            }
        }
        else
        {
            KeyBoardType.keycnt = 0;
            KeyBoardType.code = 0;
            KeyBoardType.status = 1;
        }
        break;
    case 3:
        SetLineInput();
        KeyBoardType.status++;
        break;
    case 4:
        tmp = GetLineValue();
        if(tmp != 0)
        {
            KeyBoardType.code += tmp;
            KeyBoardType.status++;
        }
        else
        {
            KeyBoardType.code = 0;
            KeyBoardType.status = 0;
        }
        KeyBoardType.keycnt = 0;
        break;  
    case 5:
        tmp = GetLineValue();
        if(tmp == (KeyBoardType.code&0xf0))
        {
            if(++KeyBoardType.keycnt > KEYSCANCNT)
            {
                KeyBoardType.status++;
            }
        }
        else
        {
            KeyBoardType.keycnt = 0;
            KeyBoardType.code = 0;
            KeyBoardType.status = 0;
        }
        break;
      
    case 6:
        for(i = 0;i < sizeof(g_KeyCode);i++)
        {
            if(KeyBoardType.code == g_KeyCode[i])
            {
                break;
            }
        }
        if(i >= sizeof(g_KeyCode))
        {
            KeyBoardType.keycnt = 0;
            KeyBoardType.code = 0;
            KeyBoardType.status = 0;
            break;
        }
        KeyBoardType.value[KeyBoardType.product] = i;
        i = (KeyBoardType.product+1)%KEYMAXNUM;
        
        if(i == KeyBoardType.consume)
        {
            KeyBoardType.flagfull = 1;
        }
        else
        {
            KeyBoardType.product = i;
        }
        KeyBoardType.status++;
        FlipOutput(LED2);
//        BUZZER_ON;
//        SysBlockTick.buzzercnt = BUZZERDLY;
        break;
    case 7:
        if(KeyBoardType.dly++ > KEYRPTDLY/KEYSCANDLY) {
             KeyBoardType.dly = 0;
             KeyBoardType.status = 0;
             KeyBoardType.keycnt = 0;
             KeyBoardType.code = 0;
        }
        break;
    default:break;
    }
}
コード例 #3
0
 int StatsTable::GetRowValue(int index) const
 {
     return GetRowValue(index, 0);
 }