Пример #1
0
/*!
 * \brief sets AlarmB
 * 
 * \param alarm         : alarmBStruct of a alarm to set
 * 
 * \param index         : the index of the alarm
 * 
 * \author Matthijs
 */
void setAlarmB(alarmBStruct alarm, int index)
{
    alarmBArray[index] = alarm;
    alarmBStruct toSet = checkFirst();
	currentAlarm = toSet;
    X12RtcSetAlarm(1, &toSet.timeSet, 31);
}
Пример #2
0
void BytesTrieTest::checkData(const StringAndValue data[], int32_t dataLength, UStringTrieBuildOption buildOption) {
    LocalPointer<BytesTrie> trie(buildTrie(data, dataLength, buildOption));
    if(trie.isNull()) {
        return;  // buildTrie() reported an error
    }
    checkFirst(*trie, data, dataLength);
    checkNext(*trie, data, dataLength);
    checkNextWithState(*trie, data, dataLength);
    checkNextString(*trie, data, dataLength);
    checkIterator(*trie, data, dataLength);
}
Пример #3
0
/*!
 * \brief Initialize the interface to an Intersil X12xx hardware clock.
 *
 * \deprecated New applications must use NutRegisterRtc().
 *
 * \return 0 on success or -1 in case of an error.
 *
 */
int X12Init(void)
{
    int rc;
    u_long tmp;

    if ((rc = TwInit(0)) == 0)
    {
        rc = X12RtcGetStatus(&tmp);
    }
    
    // loading ands setting the alarm
    createAlarms();
    //load();
    alarmBStruct first = checkFirst();
	currentAlarm = first;
    X12RtcSetAlarm(1, &first.timeSet, 31);
    
	startAlarmThread();
    return (rc);
}
Пример #4
0
//se precisa de começar e tem mais 3's pode n ter nenhuma jogada e passa, daí os 4 passos
//jogadasN, vai sempre com o mm sametype, para1, 2 ou 3 cartas
int main(){
    char input[100];
    int flag = 0, i;
    int flag2[1] = {0};
    int flag3 = 0;
    char output[100];
    int n, v;
    int io_count = 0;
    int counter = 0;
    int jog = 3;
    int jog_temp = 0;
    int a = 0;
    MAO mao_temp = 0;
    MAO usadas_temp[3] = {0};
    MCtree temp;
    char mao[13][2];
    DATABASE data = {{0},0,0,0,{0},0};
    DATABASE simulacao;
    MCtree tree = NULL;
    clock_t start;
    memset(mao,0,26);
    srand(time(0));
    fgets(input, 100, stdin);
    while(input[0] != 'A'){
        switch(input[0]){
            case 'J':
                if(input[3] == 'A'){
                    if((flag3 != 0 )|| (carta_existe(data.mao[0],0,0))){
                        flag3 = 1;
                        start = clock();
                        if(data.firstplay == 0){
                            data.firstplay = 1;
                            for(jog_temp = jog_temp -1, counter = 0; counter <= jog_temp; counter++)
                                data.usadas[counter +(3-jog_temp)] = usadas_temp[counter];
                            if(usadas_temp[0] != 0)
                                data.firstplay = 2;
                        }
                        while(((clock()-start)/CLOCKS_PER_SEC) < 2.0){
                            simulacao = data;
                            while(flag == 0){
                                temp = treePolicy(tree, &simulacao, flag2);
                                flag = defaultPolicy(temp, &simulacao, flag2);
                                flag2[0] = 0;
                                a++;
                            }
                            flag = 0;
                        }
                        jog = 1;
                        if(data.firstplay != 2)
                            checkFirst(tree, &data);
                        temp = choosePlay(tree,&data);
                        if(temp != NULL)
                            convertejogstr(temp->estado,output);
                        else{
                            strcpy(output, "PASSO");
                        }
                        printf("%s\n", output);
                        if(output[0] != 'P')
                            fgets(input, 100, stdin);
                        else
                            input[0] = 'O';
                        if(input[0] == 'O'){
                            if(temp == NULL || temp->estado == 0){
                                data.passar++;
                                if(data.passar == 3){
                                    data.nc = 0;
                                    data.jogada = 0;
                                }
                            }
                            else{
                                data.passar = 0;
                                data.jogada = temp->estado;
                                data.nc = 0;
                                for(i = 0; i < 52; i++){
                                    n = i / 13;
                                    v = i % 13;
                                    if(carta_existe(temp->estado,n,v))
                                        data.nc++;
                                }
                                free_nodes(tree,temp);
                                tree = temp;
                                tree->prev = NULL;
                                data.usadas[0] = data.usadas[0] | tree-> estado;
                                data.mao[0] = (data.mao[0]) ^ (tree->estado);
                            }
                            
                        }
                        else if(input[0] == 'N'){
                            data.passar++;
                            if(data.passar == 3){
                                data.nc = 0;
                                data.jogada = 0;
                            }
                        }
                    }
                    else{
                        printf("PASSO\n");
                    }
                }
                else{
                    mao_temp = 0;
                    io_count = sscanf(input, JOGADA, &mao[0][0],&mao[0][1],&mao[1][0],&mao[1][1],&mao[2][0],&mao[2][1],&mao[3][0],&mao[3][1],&mao[4][0],&mao[4][1],&mao[5][0],&mao[5][1],&mao[6][0],&mao[6][1],&mao[7][0],&mao[7][1],&mao[8][0],&mao[8][1],&mao[9][0],&mao[9][1],&mao[10][0],&mao[10][1],&mao[11][0],&mao[11][1],&mao[12][0],&mao[12][1]);
                    for(i = 0; i < io_count/2; i++){
                        if(mao[i][0] >= '3' && mao[i][0] <='9')
                            v = mao[i][0] - '3';
                        else{
                            switch(mao[i][0]){
                                case '2':
                                    v = 12;
                                    break;
                                case 'A':
                                    v = 11;
                                    break;
                                case 'K':
                                    v = 10;
                                    break;
                                case 'Q':
                                    v = 9;
                                    break;
                                case 'J':
                                    v = 8;
                                    break;
                                case 'T':
                                    v = 7;
                                    break;
                            }
                        }
                        switch (mao[i][1]){
                            case 'D':
                                n = 0;
                                break;
                            case 'C':
                                n = 1;
                                break;
                            case 'H':
                                n = 2;
                                break;
                            case 'S':
                                n = 3;
                                break;
                        }
                        mao_temp = add_carta(mao_temp,n,v);
                    }
                    if(data.firstplay != 0){
                        jog = (jog + 1) % 4;
                        data.usadas[jog] = data.usadas[jog] | mao_temp;
                    }
                    else{
                        usadas_temp[jog_temp] = mao_temp;
                        jog_temp++;
                    }
                    data.jogada = mao_temp;
                    data.nc = i;
                    if(data.nc == 5)
                        data.nc = 4;
                    data.passar = 0;
                    flag3 = 1;
                }
                break;
            case 'P':
                if(flag3 != 0){
                    data.passar++;
                    if(data.firstplay == 0){
                        if(jog_temp != 0)
                            jog_temp++;
                    }
                    else{
                        jog = (jog + 1) % 4;
                    }
                    if(data.passar == 3){
                        data.nc = 0;
                        data.jogada = 0;
                    }
                }
                break;
            case 'M':
                sscanf(input, MAO_INICIAL, &mao[0][0],&mao[0][1],&mao[1][0],&mao[1][1],&mao[2][0],&mao[2][1],&mao[3][0],&mao[3][1],&mao[4][0],&mao[4][1],&mao[5][0],&mao[5][1],&mao[6][0],&mao[6][1],&mao[7][0],&mao[7][1],&mao[8][0],&mao[8][1],&mao[9][0],&mao[9][1],&mao[10][0],&mao[10][1],&mao[11][0],&mao[11][1],&mao[12][0],&mao[12][1]);
                for(i = 0; i < 13; i++){
                    if(mao[i][0] >= '3' && mao[i][0] <='9')
                        v = mao[i][0] - '3';
                    else{
                        switch(mao[i][0]){
                        	case '2':
                                v = 12;
                                break;
                            case 'A':
                                v = 11;
                                break;
                            case 'K':
                                v = 10;
                                break;
                            case 'Q':
                                v = 9;
                                break;
                            case 'J':
                                v = 8;
                                break;
                            case 'T':
                                v = 7;
                                break;
                        }
                    }
                    switch (mao[i][1]){
                        case 'D':
                            n = 0;
                            break;
                        case 'C':
                            n = 1;
                            break;
                        case 'H':
                            n = 2;
                            break;
                        case 'S':
                            n = 3;
                            break;
                    }
                    data.mao[0] = add_carta(data.mao[0],n,v);
                }
                tree = createTree(data.mao[0]);
                temp = tree;
                flag3 = 0;
                break;
            
        }
    	fgets(input, 100, stdin);
    }
    return 0;
}
void TCalcDisplay::calcKey(unsigned char key)
{
    char stub[2] = " ";
    double r;

    key = (unsigned char)toupper(key);
    if( status == csError && key != 'C')
        key = ' ';

    switch(key)
        {
        case '0':   case '1':   case '2':   case '3':   case '4':
        case '5':   case '6':   case '7':   case '8':   case '9':
            checkFirst();
            if (strlen(number) < 15) 
                {                       // 15 is max visible display length
                if (strcmp(number, "0") == 0)
                    number[0] = '\0';
                stub[0] = key;
                strcat(number, stub);
                }
            break;

        case '.':
            checkFirst();
            if(strchr(number, '.') == NULL)
                {
                stub[0] = '.';
                strcat(number, stub);
                }
            break;

        case 8:
        case 27:
            int len;

            checkFirst();
            if( (len = strlen(number)) == 1 )
                strcpy(number, "0");
            else
                number[len-1] = '\0';
            break;

        case '_':                   // underscore (keyboard version of +/-)
        case 241:                   // +/- extended character.
            if (sign==' ')
              sign='-';
            else
              sign=' ';
            break;

        case '+':   case '-':   case '*':   case '/':
        case '=':   case '%':   case 13:
            if(status == csValid)
                {
                status = csFirst;
                r = getDisplay() * ((sign == '-') ? -1.0 : 1.0);
                if( key == '%' )
                    {
                    if(operate == '+' || operate == '-')
                        r = (operand * r) / 100;
                    else
                        r /= 100;
                    }
                switch( operate )
                    {
                    case '+':
                        setDisplay(operand + r);
                        break;

                    case '-':
                        setDisplay(operand - r);
                        break;

                    case '*':
                        setDisplay(operand * r);
                        break;

                    case '/':
                        if(r == 0)
                            error();
                        else
                            setDisplay(operand / r);
                        break;

                    }
                }
            operate = key;
            operand = getDisplay() * ((sign == '-') ? -1.0 : 1.0);
            break;

        case 'C':
            clear();
            break;

        }
    drawView();
}
Пример #6
0
void TCalcDisplay::calcKey(unsigned char key) {
   char stub[2] = " ";
   s64t   rv;

   key = toupper(key);
   if (status == csError && key != 27)
      key = ' ';

   switch (key) {
   case '0':   case '1':   case '2':   case '3':   case '4':
   case '5':   case '6':   case '7':   case '8':   case '9':
      checkFirst();
      if (strlen(number) < (hexmode?16:19)) {
         // 19 is max s64t length
         if (strcmp(number, "0") == NULL)
            number[0] = '\0';
         stub[0] = key;
         strcat(number, stub);
      }
      break;
   case 'A':   case 'B':   case 'C':   case 'D':   case 'E':   case 'F':
      checkFirst();
      if (hexmode && strlen(number) < 16) {
         // 21 is max visible display length
         if (strcmp(number, "0") == NULL)
            number[0] = '\0';
         stub[0] = key;
         strcat(number, stub);
      }
      break;

   case 8:
      int len;

      checkFirst();
      if ((len = strlen(number)) == 1)
         strcpy(number, "0");
      else
         number[len - 1] = '\0';
      break;

   case '_':                   // underscore (keyboard version of +/-)
   case 241:                   // +/- extended character.
      if (!hexmode) sign = (sign == ' ') ? '-' : ' ';
      break;

   case 'M':
      memory = getDisplay();
      if (sign == '-') memory = -memory;
      break;

   case 'R':
      checkFirst();
      setDisplay(memory);
      break;

   case 'X':
      rv = getDisplay();
      if (sign == '-') rv = -rv;
      hexmode = !hexmode;
      setDisplay(rv);
      break;

   case '!':
      rv = getDisplay();
      if (sign == '-') rv = -rv;
      setDisplay(~rv);
      break;

   case '+':   case '-':   case '*':   case '/':
   case '^':   case '<':   case '|':   case '>':
   case '&':   case 'P':   case '%':   case '=':   case 13:
      if (status == csValid) {
         status = csFirst;
         rv = getDisplay();
         if (sign == '-') rv = -rv;

         switch (operate) {
            case '+': setDisplay(operand + rv); break;
            case '-': setDisplay(operand - rv); break;
            case '*': setDisplay(operand * rv); break;
            case '^': setDisplay(operand ^ rv); break;
            case '|': setDisplay(operand | rv); break;
            case '&': setDisplay(operand & rv); break;
            case '<': setDisplay(operand << rv); break;
            case '>': setDisplay(operand >> rv); break;
            case 'P':
               if (rv==0) operand = 1; else {
                  s64t pw = operand;
                  while (rv-->1) operand *= pw;
               }
               setDisplay(operand); 
               break;
            case '/':
            case '%': if (rv == 0) error();
               else setDisplay(operate=='%' ? operand % rv : operand / rv);
               break;
         }
      }
      operate = key;
      operand = getDisplay();
      if (sign == '-') operand = -operand;
      break;

   case 27:
      clear();
      break;

   }
Пример #7
0
/*!
 * \brief thread that checks the alarms every 10 seconds
 * 
 * \author Matthijs
 */
THREAD(AlarmThread, args)
{
    //time struct datetime can't be found when placed in main.h
    tm datetime;
    u_long flags;
       
    X12RtcGetClock(&datetime);
    
    for(;;)
    {
        int succes = X12RtcGetStatus(&flags);
        int i;
        
        for(i = 0; i <=10; i++)
        {
                NutSleep(1000);
        }
        
        //power fail
        if(flags == 0)
        {
            //printf("\n ========== Power Fail ========== \n");
            X12RtcClearStatus(0);
        }

        //alarm A
        if(flags == 32)
        {
            printf("\n ========== Alarm 0 =========== \n");       


            //get current alarm time to compare to the weekendtime, if weekendtime is
            //equal to currentAlarm and the day of the week is friday. The alarm should
            //not go off.
            tm currentAlarm;
            int iets = 0;
            X12RtcGetAlarm(0, &currentAlarm, &iets);

            int alarmASeconds = 0;
            alarmASeconds = (currentAlarm.tm_hour * 360) + (currentAlarm.tm_min * 6) + (currentAlarm.tm_sec / 10);

            int weekendtimeSeconds = 0;
            weekendtimeSeconds = (weekendtime.hour * 360) + (weekendtime.minute * 6) + (weekendtime.second / 10);


            printf("\nalarmASeconds: %d, weekendtimeSeconds: %d", alarmASeconds, weekendtimeSeconds);
            if((alarmASeconds != weekendtimeSeconds) && checkWeekend() == 1)
            {
                printf("\nHet is VRIJDAG!!! alarm is niet gelijk aan de weekendtijd en moet dus nog geset worden\n SOUND IS PLAYING");
                //SoundA();
                startSnoozeThreadA();
            }
            else if(((alarmASeconds != weekendtimeSeconds) && (checkWeekend() == 2)) || ((alarmASeconds != weekendtimeSeconds) && (checkWeekend() == 3)))
            {
                printf("\nalarm is niet gelijk aan de weekendtijd en het is weekend, dus set");
            }
            else if(((alarmASeconds == weekendtimeSeconds) && (checkWeekend() == 2)) || ((alarmASeconds == weekendtimeSeconds) && (checkWeekend() == 3)))
            {
                printf("\nalarm is gelijk aan de weekendtijd en het is weekend,\n SOUND IS PLAYING");
                //SoundA();
                startSnoozeThreadA();

                //if the alarm goes off and it is sunday set the alarm back to its
                //original settings
                if(checkWeekend() == 3)
                {
                    printf("het is blijkbaar zondag dus terug naar doordeweekse tijd");
                    setAlarmA(alarmA.tm_hour, alarmA.tm_min, alarmA.tm_sec);
                }
            }
            else if(checkWeekend() == 0)
            {
                printf("\nhet is doordeweeks,\nSOUND IS PLAYING");
                startSnoozeThreadA();
                //SoundA();
            }
            //else
            //{
            //	printf("weekendAlarm gaat af!!!");
            //}

            //when checkWeekend returns 1(Friday) or 2(Saturday) it means that it
            //will be weekend the next day. Therefore we set the alarm to the weekend
            //settings. Problem is that most likely the alarm in the weekends will go
            //off later then it would during the week. This problem is solved underneath
            //the if(checkWeekend() == 3){}.
            int currentTime = (datetime.tm_hour * 360) + (datetime.tm_min * 6) + (datetime.tm_sec / 10);

            if(checkWeekend() > 0 && checkWeekend() < 3)
            {
                printf("alarmA set to weekend time");
                setAlarmA(weekendtime.hour,weekendtime.minute,weekendtime.second);
            }
            else if(checkWeekend() == 3 && (currentTime <= weekendtimeSeconds))
            {
                setAlarmA(weekendtime.hour,weekendtime.minute,weekendtime.second);
            }

            X12RtcClearStatus(32);
        }

        //alarm B
        if(flags == 64)
        {
            printf("\n ============ Alarm 1================== \n");
           
            startSnoozeThreadB();
            ClearAlarm('b');
            X12RtcClearStatus(64);
			alarmBArray[currentAlarm.index].set = 0;
            alarmBStruct newSet = checkFirst();
            X12RtcSetAlarm(1, &newSet.timeSet, 31);
            currentAlarm = newSet;
        }

        //both alarms
        if(flags == 96)
        {
            //kijkt of alarm a of b nog niet heeft geluid, en speelt die dan
            printf("\n ========== Alarm 0 en 1  ========= \n");
            //kijkt welke van de 2 nog niet is afgegaan en speelt die dan nog af
            SoundA();  
            X12RtcClearStatus(32);
            SoundB();
            X12RtcClearStatus(64);
        }

        if(succes == 0)
        {
            //succes
        }
        else
        {
            //error
        }
    }
}
Пример #8
0
int main(int argc, char **argv)
{
    if (argc != 3 && argc != 4)
    {
        std::cout << "Usage: Maxit_tester <program1> <program2> [<seed>]\n";
        return 1;
    }
    const char *program1 = argv[1];
    const char *program2 = argv[2];

    // init field
    if (argc >= 4)
        srand(atoi(argv[3]));
    else
        srand((unsigned int)time(NULL));
    for (int i = 0 ; i < size ; ++i)
    {
        for (int j = 0 ; j < size ; ++j)
        {
            field[i][j] = rand() % size + 1;
        }
    }
    col = 1;
    row = 1;

    // save field and score before the first move
    saveField(1);

    bool first = true;
    ExecutionResult result = ER_OK;
    for (int move = 0 ; move < size * size ; ++move)
    {
        std::ostringstream outs;
        for (int i = 0 ; i < size ; ++i)
        {
            for (int j = 0 ; j < size ; ++j)
            {
                outs << field[i][j] << " ";
            }
            outs << "\n";
        }
		outs << !first + 1 << "\n" << (first ? row : col) << "\n"; 
        std::string output;
        printInput(first, outs.str());
        result = runProcess(first ? program1 : program2, 
            outs.str(), output, 1000, 64000);
        if (result == ER_OK)
        {
            InStream ins(output);

            int rowcol;
            try
            {
                ins >> ValueInBounds<int>(rowcol, 1, size);
            }
            catch (ReadCheckerException &exception)
            {
                result = ER_IM;

                std::ostringstream outs;
                outs << output << std::endl << exception.getReadResultText() << ": " << exception.what() << std::endl;

                printLog(first, result, outs.str());
                break;
            }

            if  (
                    (first && field[row-1][rowcol-1]) ||
                    (!first && field[rowcol-1][col-1])
                )
            {

                if (first)
                    col = rowcol;
                else
                    row = rowcol;

                printLog(first, result, output);

                scores[!first] += field[row-1][col-1];
                
                field[row-1][col-1] = -field[row-1][col-1];
                // save field and score after the correct move
                saveField(!first + 1);
                field[row-1][col-1] = 0;

                // get next player
                bool canFirst = checkFirst(row);
                bool canSecond = checkSecond(col);
                if ((first && canSecond)
                    || (!first && canFirst))
                    first = !first;
                else if (canFirst)
                    first = true;
                else if (canSecond)
                    first = false;
                else 
                    break;
            }
            else
            {
                result = ER_IM;
                printLog(first, result, output);
                break;
            }
        }
        else
        {