コード例 #1
0
int
capiconn_listen(capiconn_context *ctx,
		unsigned contr, unsigned cipmask, unsigned cipmask2)
{
	capi_contr *card = findcontrbynumber(ctx, contr & 0x7f);

	if (card == 0)
		return CAPICONN_NO_CONTROLLER;

	card->cipmask = cipmask;	/* 0x1FFF03FF */
	card->cipmask2 = cipmask2;	/* 0 */

	send_listen(card);
	return CAPICONN_OK;
}
コード例 #2
0
void slave_end (uint8_t slave_cmd) {

	uint8_t i = 0;
	
	_current_state = RF_STATE_S_END;
 	
	while (i < 30 && RF_CMD_ACK != received_command ) {
		received_command = send_listen ((RF_CMD)slave_cmd);
		i++;
	}
	if (RF_CMD_ACK == received_command)	{
	 	go_wait();
	}
	else {
		go_wait();
	}
}
コード例 #3
0
static void up_callback(CALL *call,int cause,void *more,void *user)
{
    SIGNALING_ENTITY *sig = user;
    int error;

    if (cause) {
	diag(COMPONENT,DIAG_ERROR,"up_callback: error (cause %d)",cause);
	return;
    }
    if (sig->command) system(sig->command);
    sig->s = un_attach(sig->path);
    if (sig->s < 0)
	diag(COMPONENT,DIAG_FATAL,"un_attach %s: %s",sig->path,strerror(errno));
    send_listen(sig);
    error = sig_recv(sig,sig_check_listen);
    if (error) diag(COMPONENT,DIAG_FATAL,"listen failed: %s",strerror(error));
    dsp_fd_add(sig->s,sig_data,sig);
    route_sig(sig,&sig->call->out.pvc,1);
}
コード例 #4
0
void slave_move_send (void) {
	uint8_t i = 0;

	_current_state = RF_STATE_S_MOVE_SEND;


	
	while (RF_CMD_NO_CMD == slave_move && i++ < 10) {
		if (no_move == recorded_move) {
			wait (10000);
		}
		else  {
			switch (recorded_move) {
			 	case rock:
					 slave_move = RF_CMD_ROCK;
					 break;
				case paper:
					slave_move = RF_CMD_PAPER;
					break;
				case scissors:
					slave_move = RF_CMD_SCISSORS;
					break;			 
			}
			recorded_move = no_move;
		}
	}




	while (i < 30 && !((RF_CMD_MWIN | RF_CMD_MLOSE | RF_CMD_TIE) & received_command ) ) {
		received_command = send_listen (slave_move);
		i++;
	}

	if (((RF_CMD_MWIN | RF_CMD_MLOSE | RF_CMD_TIE) & received_command ))	{
	 	  slave_end (received_command);
	}
	else {
		go_wait();
	}
}
コード例 #5
0
void master_sync_send (void) {
	uint8_t i = 0;

		recorded_move = no_move;
		master_move = RF_CMD_NO_CMD;
		latch_move (rock | paper | scissors);
	
	
	_current_state = RF_STATE_M_SYNC_SEND;
	while (i < 20 && 	RF_CMD_NO_CMD == received_command ) {
		received_command =  send_listen (RF_CMD_REQ);
		i++;
	}
	if  (RF_CMD_ACK == received_command) {
		master_move_wait();
	}
	else {
		go_wait();
	}
}
コード例 #6
0
void SOCKS5_Listener::read_ready()
{
    char b1, b2;
    unsigned short port;
    unsigned long ip;
    switch (m_state){
    case WaitAnswer:
        read(2);
        bIn >> b1 >> b2;
        if ((b1 != 0x05) || (b2 == '\xFF')) {
            error_state(ANSWER_ERROR, m_plugin->ProxyErr);
            return;
        }
        if (b2 == 0x02) {
            const char *user = getUser();
            const char *pswd = getPassword();
            bOut
            << (char)0x01
            << (char)strlen(user)
            << user
            << (char)strlen(pswd)
            << pswd;
            m_state = WaitAuth;
            write();
            return;
        }
        send_listen();
        return;
    case WaitAuth:
        read(2);
        bIn >> b1 >> b2;
        if ((b1 != 0x01) || (b2 != 0x00)) {
            error_state(AUTH_ERROR, m_plugin->ProxyErr);
            return;
        }
        send_listen();
        return;
    case WaitListen:
        read(10);
        bIn >> b1 >> b2;
        if ((b1 != 0x05) || (b2 != 0x00)) {
            error_state(AUTH_ERROR, m_plugin->ProxyErr);
            return;
        }
        bIn >> b1 >> b2;
        bIn >> ip;
        bIn >> port;
        m_state = Accept;
        if (notify)
            notify->bind_ready(port);
        return;
    case Accept:
        read(10);
        bIn >> b1 >> b2;
        if ((b1 != 0x05) || (b2 != 0x02)) {
            error_state("Bad accept code", 0);
            return;
        }
        bIn >> b1 >> b2;
        bIn >> ip;
        if (notify){
            notify->accept(m_sock, ip);
            m_sock = NULL;
        }else{
            error_state("Bad accept code", 0);
            return;
        }
        return;
    default:
        break;
    }
}
コード例 #7
0
void master_result_send (uint8_t slave_cmd) {

	uint8_t i = 0;
	RF_CMD result = RF_CMD_NO_CMD;

	_current_state = RF_STATE_M_RESULT_SEND;
	

	while (RF_CMD_NO_CMD == master_move && i++ < 10) {
		while (no_move == recorded_move);
	
			switch (recorded_move) {
			 	case rock:
					 master_move = RF_CMD_ROCK;
					 break;
				case paper:
					master_move = RF_CMD_PAPER;
					break;
				case scissors:
					master_move = RF_CMD_SCISSORS;
					break;
				default:
					master_move = 	RF_CMD_NO_CMD;		 
			}
			recorded_move = no_move;
		
	}
	
	switch (master_move) { 	 	
		case RF_CMD_ROCK:
			if ( RF_CMD_ROCK == (RF_CMD)slave_cmd) 
				result = RF_CMD_TIE;
			else if ( RF_CMD_PAPER == (RF_CMD)slave_cmd) 
				result = RF_CMD_MLOSE;
			else
				result = RF_CMD_MWIN;

			break;

		case RF_CMD_PAPER:

			if ( RF_CMD_PAPER == (RF_CMD)slave_cmd) 
				result = RF_CMD_TIE;
			else if ( RF_CMD_SCISSORS == (RF_CMD)slave_cmd) 
				result = RF_CMD_MLOSE;
			else
				result = RF_CMD_MWIN;

			break;

		case RF_CMD_SCISSORS:
			if ( RF_CMD_SCISSORS == (RF_CMD)slave_cmd) 
				result = RF_CMD_TIE;
			else if ( RF_CMD_ROCK == (RF_CMD)slave_cmd) 
				result = RF_CMD_MLOSE;
			else
				result = RF_CMD_MWIN; 
			
			break;
		default:
			go_wait();
			break;
	}
	i = 0;
	while (i < 30 && result != received_command ) {
		received_command = send_listen (result);
		i++;
	}

	if (result == received_command) {
		master_end();		
	}

	else {
	 	go_wait();
	}

}