Exemplo n.º 1
0
void ModemBase::answer()
{
	if (!_isRinging)
	{
		disconnect();  // This prints "NO CARRIER"
		return;
	}

	_isConnected = true;
	_isCommandMode = false;
	_isRinging = false;

	if (_baudRate == 38400)
	{
		printResponse("28", F("CONNECT 38400"));
	}
	else if (_baudRate == 19200)
	{
		printResponse("14", F("CONNECT 19200"));
	}
	else if (_baudRate == 14400)
	{
		printResponse("13", F("CONNECT 14400"));
	}
	else if (_baudRate == 9600)
	{
		printResponse("12", F("CONNECT 9600"));
	}
	else if (_baudRate == 4800)
	{
		printResponse("11", F("CONNECT 4800"));
	}
	else if (_baudRate == 2400)
	{
		printResponse("10", F("CONNECT 2400"));
	}
	else if (_baudRate == 1200)
	{
		printResponse("5", F("CONNECT 1200"));
	}
	else
	{
		if (!_verboseResponses)
			_serial->println('1');
		else
		{
			_serial->print(F("CONNECT "));
			_serial->println(_baudRate);
		}
	}

	digitalWrite(RTS, LOW);

	TerminalMode();
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
    char *infile = NULL, fullName[FILENAME_MAX];
    int runFlags = 0;
    int terminalMode = FALSE;
    BoardConfig *config;
    char *port, *board;
    System sys;
    int i;

    /* get the environment settings */
    if (!(port = getenv("PORT")))
        port = DEF_PORT;
    if (!(board = getenv("BOARD")))
        board = DEF_BOARD;

    /* get the arguments */
    for(i = 1; i < argc; ++i) {

        /* handle switches */
        if(argv[i][0] == '-') {
            switch(argv[i][1]) {
            case 'b':   // select a target board
                if (argv[i][2])
                    board = &argv[i][2];
                else if (++i < argc)
                    board = argv[i];
                else
                    Usage();
                break;
            case 'd':
                runFlags |= RUN_PAUSE;
                break;
            case 'p':
                if(argv[i][2])
                    port = &argv[i][2];
                else if(++i < argc)
                    port = argv[i];
                else
                    Usage();
                if (isdigit((int)port[0])) {
#if defined(CYGWIN) || defined(WIN32)
                    static char buf[10];
                    sprintf(buf, "COM%d", atoi(port));
                    port = buf;
#endif
#ifdef LINUX
                    static char buf[10];
                    sprintf(buf, "/dev/ttyUSB%d", atoi(port));
                    port = buf;
#endif
                }
                break;
            case 's':
                runFlags |= RUN_STEP;
                break;
            case 't':
                terminalMode = TRUE;
                break;
            default:
                Usage();
                break;
            }
        }

        /* handle the input filename */
        else {
            if (infile)
                Usage();
            infile = argv[i];
        }
    }
    
    sys.ops = &myOps;
    ParseConfigurationFile(&sys, "xbasic.cfg");

    /* make sure an input file was specified */
    if (!infile)
        Usage();
    ConstructFileName(infile, fullName, ".bai");

    /* setup for the selected board */
    if (!(config = GetBoardConfig(board)))
        Usage();

    /* initialize the serial port */
    if (!InitPort(port)) {
        fprintf(stderr, "error: opening serial port\n");
        return 1;
    }

    /* load the compiled image */
    if (!LoadImage(&sys, config, port, fullName)) {
        fprintf(stderr, "error: load failed\n");
        return 1;
    }
    
    /* run the loaded image */
    if (!RunLoadedProgram(runFlags)) {
        fprintf(stderr, "error: run failed\n");
        return 1;
    }

    /* enter terminal mode if requested */
    if (terminalMode)
        TerminalMode();
    
    return 0;
}
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
    XbeeAddrList addrs;
    char *infile = NULL;
    char *ipaddr = NULL;
    LoadType loadType = ltDownloadAndRun;
    int terminalMode = 0;
    int pstMode = 0;
    int ret, i;

    /* get the arguments */
    for (i = 1; i < argc; ++i) {

        /* handle switches */
        if (argv[i][0] == '-') {
            switch(argv[i][1]) {
            case 'e':
                loadType = ltDownloadAndProgramAndRun;
                break;
            case 'i':
                if (argv[i][2])
                    ipaddr = &argv[i][2];
                else if (++i < argc)
                    ipaddr = argv[i];
                else
                    Usage();
                break;
            case 'r':
                if (argv[i][2])
                    resetPin = atoi(&argv[i][2]);
                else if (++i < argc)
                    resetPin = atoi(argv[i]);
                else
                    Usage();
                break;
            case 't':
                terminalMode = 1;
                break;
            case 'v':
                verbose = 1;
                break;
            case '?':
                /* fall through */
            default:
                Usage();
                break;
            }
        }

        /* handle the input filename */
        else {
            if (infile)
                Usage();
            infile = argv[i];
        }
    }
    
    if (infile) {
        if (!ipaddr) {
            printf("error: must specify IP address or host name with -i\n");
            return 1;
        }
        if (fastLoad(ipaddr, infile, loadType) < 0)
            return 1;
    }
    
    else if (!terminalMode) {
        if ((ret = discover(addrs, 2000)) < 0) {
            printf("error: discover failed: %d\n", ret);
            return 1;
        }
    }
    
    if (terminalMode) {
        setBaudRate(ipaddr, terminalBaudRate);
        printf("[ Entering terminal mode. Type ESC or Control-C to exit. ]\n");
        TerminalMode(ipaddr, pstMode);
    }
    
    return 0;
}