/** * main * * The main function for the project. This function initializes the os, calls * init_tasks to initialize tasks (and possibly other objects), then starts the * OS. We should not return from os start. * * @return int NOTE: this function should never return! */ int main(void) { int i; int rc; uint32_t seed; /* Initialize OS */ os_init(); /* Set cputime to count at 1 usec increments */ rc = cputime_init(1000000); assert(rc == 0); rc = os_mempool_init(&g_mbuf_mempool, MBUF_NUM_MBUFS, MBUF_MEMBLOCK_SIZE, &g_mbuf_buffer[0], "mbuf_pool"); rc = os_mbuf_pool_init(&g_mbuf_pool, &g_mbuf_mempool, MBUF_MEMBLOCK_SIZE, MBUF_NUM_MBUFS); assert(rc == 0); /* Dummy device address */ memcpy(g_dev_addr, prphtest_slv_addr, 6); /* * Seed random number generator with least significant bytes of device * address. */ seed = 0; for (i = 0; i < 4; ++i) { seed |= g_dev_addr[i]; seed <<= 8; } srand(seed); /* Set the led pin as an output */ g_led_pin = LED_BLINK_PIN; gpio_init_out(g_led_pin, 1); /* Init the console */ rc = console_init(NULL); assert(rc == 0); /* Init tasks */ init_tasks(); /* Start the OS */ os_start(); /* os start should never return. If it does, this should be an error */ assert(0); return rc; }
/** * main * * The main function for the project. This function initializes the os, calls * init_tasks to initialize tasks (and possibly other objects), then starts the * OS. We should not return from os start. * * @return int NOTE: this function should never return! */ int main(void) { struct ble_hs_cfg cfg; uint32_t seed; int rc; int i; /* Initialize OS */ os_init(); /* Set cputime to count at 1 usec increments */ rc = cputime_init(1000000); assert(rc == 0); /* Seed random number generator with least significant bytes of device * address. */ seed = 0; for (i = 0; i < 4; ++i) { seed |= g_dev_addr[i]; seed <<= 8; } srand(seed); /* Initialize msys mbufs. */ rc = os_mempool_init(&bleprph_mbuf_mpool, MBUF_NUM_MBUFS, MBUF_MEMBLOCK_SIZE, bleprph_mbuf_mpool_data, "bleprph_mbuf_data"); assert(rc == 0); rc = os_mbuf_pool_init(&bleprph_mbuf_pool, &bleprph_mbuf_mpool, MBUF_MEMBLOCK_SIZE, MBUF_NUM_MBUFS); assert(rc == 0); rc = os_msys_register(&bleprph_mbuf_pool); assert(rc == 0); /* Initialize the logging system. */ log_init(); log_console_handler_init(&bleprph_log_console_handler); log_register("bleprph", &bleprph_log, &bleprph_log_console_handler); os_task_init(&bleprph_task, "bleprph", bleprph_task_handler, NULL, BLEPRPH_TASK_PRIO, OS_WAIT_FOREVER, bleprph_stack, BLEPRPH_STACK_SIZE); /* Initialize the BLE LL */ rc = ble_ll_init(BLE_LL_TASK_PRI, MBUF_NUM_MBUFS, BLE_MBUF_PAYLOAD_SIZE); assert(rc == 0); /* Initialize the BLE host. */ cfg = ble_hs_cfg_dflt; cfg.max_hci_bufs = 3; cfg.max_connections = 1; cfg.max_attrs = 42; cfg.max_services = 5; cfg.max_client_configs = 6; cfg.max_gattc_procs = 2; cfg.max_l2cap_chans = 3; cfg.max_l2cap_sig_procs = 1; cfg.sm_bonding = 1; cfg.sm_our_key_dist = BLE_L2CAP_SM_PAIR_KEY_DIST_ENC; cfg.sm_their_key_dist = BLE_L2CAP_SM_PAIR_KEY_DIST_ENC; /* Initialize eventq */ os_eventq_init(&bleprph_evq); rc = ble_hs_init(&bleprph_evq, &cfg); assert(rc == 0); /* Initialize the console (for log output). */ rc = console_init(NULL); assert(rc == 0); /* Register GATT attributes (services, characteristics, and * descriptors). */ gatt_svr_init(); /* Start the OS */ os_start(); /* os start should never return. If it does, this should be an error */ assert(0); return 0; }
/** * main * * The main function for the project. This function initializes the os, calls * init_tasks to initialize tasks (and possibly other objects), then starts the * OS. We should not return from os start. * * @return int NOTE: this function should never return! */ int main(void) { int i; int rc; int cnt; uint32_t seed; struct nffs_area_desc descs[NFFS_AREA_MAX]; /* Initialize OS */ os_init(); /* Set cputime to count at 1 usec increments */ rc = cputime_init(1000000); assert(rc == 0); rc = os_mempool_init(&g_mbuf_mempool, MBUF_NUM_MBUFS, MBUF_MEMBLOCK_SIZE, &g_mbuf_buffer[0], "mbuf_pool"); assert(rc == 0); rc = os_mbuf_pool_init(&g_mbuf_pool, &g_mbuf_mempool, MBUF_MEMBLOCK_SIZE, MBUF_NUM_MBUFS); assert(rc == 0); rc = os_msys_register(&g_mbuf_pool); assert(rc == 0); /* Dummy device address */ #if BLETEST_CFG_ROLE == BLETEST_ROLE_ADVERTISER g_dev_addr[0] = 0x00; g_dev_addr[1] = 0x00; g_dev_addr[2] = 0x00; g_dev_addr[3] = 0x88; g_dev_addr[4] = 0x88; g_dev_addr[5] = 0x08; g_bletest_cur_peer_addr[0] = 0x00; g_bletest_cur_peer_addr[1] = 0x00; g_bletest_cur_peer_addr[2] = 0x00; g_bletest_cur_peer_addr[3] = 0x99; g_bletest_cur_peer_addr[4] = 0x99; g_bletest_cur_peer_addr[5] = 0x09; #else g_dev_addr[0] = 0x00; g_dev_addr[1] = 0x00; g_dev_addr[2] = 0x00; g_dev_addr[3] = 0x99; g_dev_addr[4] = 0x99; g_dev_addr[5] = 0x09; g_bletest_cur_peer_addr[0] = 0x00; g_bletest_cur_peer_addr[1] = 0x00; g_bletest_cur_peer_addr[2] = 0x00; g_bletest_cur_peer_addr[3] = 0x88; g_bletest_cur_peer_addr[4] = 0x88; g_bletest_cur_peer_addr[5] = 0x08; #endif /* * Seed random number generator with least significant bytes of device * address. */ seed = 0; for (i = 0; i < 4; ++i) { seed |= g_dev_addr[i]; seed <<= 8; } srand(seed); /* Set the led pin as an output */ g_led_pin = LED_BLINK_PIN; gpio_init_out(g_led_pin, 1); /* Init the console */ rc = console_init(shell_console_rx_cb); assert(rc == 0); rc = hal_flash_init(); assert(rc == 0); nffs_config.nc_num_inodes = 32; nffs_config.nc_num_blocks = 64; nffs_config.nc_num_files = 2; nffs_config.nc_num_dirs = 2; rc = nffs_init(); assert(rc == 0); cnt = NFFS_AREA_MAX; rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs); assert(rc == 0); if (nffs_detect(descs) == FS_ECORRUPT) { rc = nffs_format(descs); assert(rc == 0); } shell_task_init(SHELL_TASK_PRIO, shell_stack, SHELL_TASK_STACK_SIZE, SHELL_MAX_INPUT_LEN); nmgr_task_init(NEWTMGR_TASK_PRIO, newtmgr_stack, NEWTMGR_TASK_STACK_SIZE); imgmgr_module_init(); /* Init statistics module */ stats_module_init(); /* Init tasks */ init_tasks(); /* Start the OS */ os_start(); /* os start should never return. If it does, this should be an error */ assert(0); return rc; }