Beispiel #1
0
int main(void)
{
    PWM_init();
    
	CF_init(&alpha, &beta);
	
	PID_init(&pid_x, &pid_y);
	
	Flags_init();
    
	Timer1_init();
	
	Twi_init();
	
	Usart_init();

    deviceInit_adc();

    deviceInit_rc();
	
    if(!deviceInit() || !Flags_getBit(flags_deviceAdcInitialised) || !Flags_getBit(flags_deviceRcInitialised))
	{
		_exit();
	}
	
	// todo: workaround for slave initialization
	deviceInitialize(deviceID_slave, _true);

    // todo: workaround for gps initialization
    deviceInitialize(deviceID_gps, _true);
	
	//enable interrupts
	_enableInterrupts();

    while(1);
}	
int32_t main(int argc, char **argv)
{
    int32_t i = 0;
    pthread_t	vPollcmd;
    pthread_t	vPipecmd;

    _gCurrentState=STATE_INIT;

    for(i = 0; i < argc; i++)
    {
        if(0 == memcmp("-d", argv[i], 2))
        {
            if(i+1 < argc)
            {
                _gDebugFlagMask = strtol(argv[i+1], NULL, 0);
                i++;
            }
            else
            {
                _gDebugFlagMask=0xFF;
            }
            printf("enable debug, mask = 0x%04X\n", _gDebugFlagMask);
            _gDebugFlag=1;
        }
        else if(0 == memcmp("-t", argv[i], 2))
        {
            _gTestMode=1;
        }
    }

    _gQuitHandler = signal( SIGQUIT, exit_handler );
    _gKillHandler = signal( SIGKILL, exit_handler );
    _gTermHandler = signal( SIGTERM, exit_handler );
    _gTermHandler = signal( SIGINT, exit_handler );

#if(_DEBUG_ == 1 && _DEBUG_TO_FILE_ == 1)
    if(gDebugToFile == 1)
        util_debug_file_init();
#endif
    pipe_init();
    if(0 != i2c_init())
        return -1;
#ifdef STATUS_LED
    LED_init();
#endif	
#ifdef PUBLIC_GPIO
    GPIO_init();
#endif
    Flags_init();
    sysinfo_update_init();
    menu_init();
    signal( SIG_PROC_CMD, cmd_queue_handler );
    signal( SIG_PROC_MENU, menu_queue_handler );
    sigemptyset(&_gSigMask);
    
    pthread_create(&vPollcmd, NULL, timer_main, NULL);
    pthread_create(&vPipecmd, NULL, pipecmd, NULL);
    pthread_join( vPollcmd, NULL);
    pthread_join( vPipecmd, NULL);

    return (0);
}