示例#1
0
文件: kbd.c 项目: mtarek/BeRTOS
/**
 * Initialize keyboard ports and softtimer
 */
void kbd_init(void)
{
#if CONFIG_KBD_BEEP
    MOD_CHECK(buzzer);
#endif

    KBD_HW_INIT;

    /* Init handlers lists */
    LIST_INIT(&kbd_handlers);
    LIST_INIT(&kbd_rawHandlers);

    /* Add debounce keyboard handler */
    kbd_debHandler.hook = kbd_debHandlerFunc;
    kbd_debHandler.pri = 100; /* high priority */
    kbd_debHandler.flags = KHF_RAWKEYS;
    kbd_addHandler(&kbd_debHandler);

#if CONFIG_KBD_LONGPRESS
    /* Add long pression keyboard handler */
    kbd_lngHandler.hook = kbd_lngHandlerFunc;
    kbd_lngHandler.pri = 90; /* high priority */
    kbd_lngHandler.flags = KHF_RAWKEYS;
    kbd_addHandler(&kbd_lngHandler);
#endif

    /* Add repeat keyboard handler */
    kbd_rptHandler.hook = kbd_rptHandlerFunc;
    kbd_rptHandler.pri = 80; /* high priority */
    kbd_rptHandler.flags = KHF_RAWKEYS;
    kbd_addHandler(&kbd_rptHandler);

    /* Add default keyboard handler */
    kbd_defHandler.hook = kbd_defHandlerFunc;
    kbd_defHandler.pri = -128; /* lowest priority */
    kbd_addHandler(&kbd_defHandler);

#if CONFIG_KBD_OBSERVER
    observer_InitSubject(&kbd_subject);
#endif

#if CONFIG_KBD_POLL == KBD_POLL_SOFTINT

    MOD_CHECK(timer);

    /* Add kbd handler to soft timers list */
    event_initSoftint(&kbd_timer.expire, kbd_softint, NULL);
    timer_setDelay(&kbd_timer, ms_to_ticks(KBD_CHECK_INTERVAL));
    timer_add(&kbd_timer);

#else
#error "Define keyboard poll method"

#endif

    MOD_INIT(kbd);
}
示例#2
0
/**
 * Setup all needed for kfile test
 */
int kfile_testSetup(void)
{
        MOD_INIT(kfile_test);
        LOG_INFO("Mod init..ok\n");

		// Init our backend and the buffers
		kfilemem_init(&mem, test_disk, BUF_TEST_LEN);
		init_testBuf();

        return 0;
}
示例#3
0
/**
 * Data flash init function.
 *
 * This function provide to initialize all that
 * needs to drive a dataflash memory.
 * Generaly needs to init pins to drive a CS line
 * and reset line.
 */
void dataflash_hw_init(void)
{

    //Disable CS line (remove if not needed)
	dataflash_hw_setCS(false);

	/*
	 * Put here your code!
	 *
	 * Note:
	 * - if you drive manualy CS line, here init a CS pin
	 * - if you use a dedicated reset line, here init a reset pin
	 */

	MOD_INIT(hw_dataflash);
}
示例#4
0
void proc_init(void)
{
	LIST_INIT(&proc_ready_list);

#if CONFIG_KERN_HEAP
	LIST_INIT(&zombie_list);
	heap_init(&proc_heap, heap_buf, sizeof(heap_buf));
#endif
	/*
	 * We "promote" the current context into a real process. The only thing we have
	 * to do is create a PCB and make it current. We don't need to setup the stack
	 * pointer because it will be written the first time we switch to another process.
	 */
	proc_initStruct(&main_process);
	current_process = &main_process;

#if CONFIG_KERN_MONITOR
	monitor_init();
	monitor_add(current_process, "main");
#endif
	MOD_INIT(proc);
}
示例#5
0
int main (int argc, char **argv) {
    MOD_SET_PROGRAM_NAME(argv[0]);
    Py_Initialize();
    MOD_INIT(demangler)();
    return 0;
}