Esempio n. 1
0
void cmd_start_session(char *arg) {
    if(mdb_state == MDB_ENABLED) {
        if(session.start.flag == 0) {
            session.start.flag = 1;
            session.start.funds = atoi(arg);
            mdb_poll_reply = MDB_REPLY_BEGIN_SESSION;
        } else {
            send_str_p(UPLINK_USART,PSTR("Error: Session is already running\r\n"));  
        }
    } else {
        send_str_p(UPLINK_USART,PSTR("Error: MateDealer not ready for a session\r\n"));  
    }
}
Esempio n. 2
0
void cmd_cancel_session(char *arg) {
    if(mdb_state == MDB_SESSION_IDLE) {
        mdb_poll_reply = MDB_REPLY_SESSION_CANCEL_REQ;
    } else {
        send_str_p(UPLINK_USART,PSTR("Error: MateDealer is not in a suitable state to cancel a session\r\n"));  
    }
}
Esempio n. 3
0
void cmd_deny_vend(char *arg) {
    if(mdb_state == MDB_VENDING) {
        session.result.vend_denied = 1;
        mdb_poll_reply = MDB_REPLY_VEND_DENIED;
    } else {
        send_str_p(UPLINK_USART,PSTR("Error: MateDealer is not in a suitable state to deny a vend\r\n"));  
    }
}
Esempio n. 4
0
void cmd_help(char *arg) {
    send_str_p(UPLINK_USART, PSTR("-----------------------------------------------\r\n"));
    send_str_p(UPLINK_USART, PSTR("reset:\r\n   reset the Arduino\r\n"));
    send_str_p(UPLINK_USART, PSTR("info:\r\n   shows the VMC infos transfered during the setup process\r\n"));
    send_str_p(UPLINK_USART, PSTR("get-mdb-state:\r\n   displays the current MDB state.\r\n"));
    send_str_p(UPLINK_USART, PSTR("start-session <funds>:\r\n   starts a session with <funds> Euro Cents.\r\n"));
    send_str_p(UPLINK_USART, PSTR("approve-vend <vend-amount>:\r\n   approves a vend request with <vend-amount> Euro Cents.\r\n"));
    send_str_p(UPLINK_USART, PSTR("deny-vend:\r\n   denies a vend request.\r\n"));
    send_str_p(UPLINK_USART, PSTR("-----------------------------------------------\r\n"));
}
Esempio n. 5
0
void cmd_get_mdb_state(char *arg) {
    
    switch(mdb_state) {
        case MDB_INACTIVE:
            send_str_p(UPLINK_USART,PSTR("INACTIVE\r\n"));  
        break;
        case MDB_DISABLED:
            send_str_p(UPLINK_USART,PSTR("DISABLED\r\n"));  
        break;
        case MDB_ENABLED:
            send_str_p(UPLINK_USART,PSTR("ENABLED\r\n"));  
        break;
        case MDB_SESSION_IDLE:
            send_str_p(UPLINK_USART,PSTR("SESSION IDLE\r\n"));  
        break;
        case MDB_VENDING:
            send_str_p(UPLINK_USART,PSTR("VEND\r\n"));  
        break;
        case MDB_REVALUE:
            send_str_p(UPLINK_USART,PSTR("REVALUE\r\n"));  
        break;
        case MDB_NEGATIVE_VEND:
            send_str_p(UPLINK_USART,PSTR("NEGATIVE VEND\r\n"));  
        break;
    }
    
}
Esempio n. 6
0
void cmd_approve_vend(char *arg) {
    if(mdb_state == MDB_VENDING) {
        session.result.vend_approved = 1;
        session.result.vend_amount = atoi(arg);
        mdb_poll_reply = MDB_REPLY_VEND_APPROVED;
    } else {
        send_str_p(UPLINK_USART,PSTR("Error: MateDealer is not in a suitable state to approve a vend\r\n"));  
    }
}
Esempio n. 7
0
void cmd_info(char *arg) {
    if(mdb_state >= MDB_ENABLED) {
        char buffer[40];
        send_str_p(UPLINK_USART, PSTR("-----------------------------------------------\r\n"));
        send_str_p(UPLINK_USART,PSTR("## VMC configuration data ##\r\n")); 
        sprintf(buffer,"VMC feature level:       %d\r\n", vmc.feature_level);
        send_str(UPLINK_USART,buffer);  
        sprintf(buffer,"VMC display columns:     %d\r\n", vmc.dispaly_cols);
        send_str(UPLINK_USART,buffer);  
        sprintf(buffer,"VMC display rows:        %d\r\n", vmc.dispaly_rows);
        send_str(UPLINK_USART,buffer);  
        sprintf(buffer,"VMC display info:        %d\r\n", vmc.dispaly_info);
        send_str(UPLINK_USART,buffer);  
        send_str_p(UPLINK_USART,PSTR("##    VMC price range     ##\r\n")); 
        sprintf(buffer,"Maximum price:           %d\r\n", price.max);
        send_str(UPLINK_USART,buffer);  
        sprintf(buffer,"Minimum price:           %d\r\n", price.min);
        send_str(UPLINK_USART,buffer);
        send_str_p(UPLINK_USART,PSTR("-----------------------------------------------\r\n"));  
    } else {
        send_str_p(UPLINK_USART,PSTR("Error: Setup not yet completed!\r\n"));  
    }
}
Esempio n. 8
0
int main(void) {

    setup_usart(0,38400,8,'N',1);
    setup_usart(1,9600,9,'N',1);
    
    sei();
    
    send_str_p(0,PSTR("MateDealer is up and running\r\n"));
       
    // Main Loop
    while(1) {
        mdb_cmd_handler();
        uplink_cmd_handler();
    }
    
    return 0;
}
Esempio n. 9
0
void parse_cmd(char *cmd) {
    
	char *tmp;
	uint8_t index = 0;
     
    // seperate command from arguments
    tmp = strsep(&cmd," "); 
    
    // search in command list for the command
	while(strcasecmp(CMD_LIST[index].cmd,tmp)) {
        if(CMD_LIST[index + 1].cmd == NULL) {
            send_str_p(UPLINK_USART,PSTR("Error: Unknown command\r\n"));    
            return;
        }
        index++;
    }

    // run the command
    CMD_LIST[index].funcptr(cmd);
	return;
  
}