static void test_reset(void) { protothread_t const pt = protothread_create() ; reset_context_t * const c = calloc(1, sizeof(*c)) ; /* Start running the thread and then make sure we * can really reset the thread location */ pt_create(pt, &c->pt_thread, reset_thr, c) ; protothread_run(pt) ; assert(c->i == 0) ; protothread_run(pt) ; assert(c->i == 1) ; pt_reset(c) ; protothread_run(pt) ; assert(c->i == 0) ; while (protothread_run(pt)) ; free(c) ; protothread_free(pt) ; }
int qm_aonpt_reset(const qm_aonc_t aonc) { QM_CHECK(aonc < QM_AONC_NUM, -EINVAL); pt_reset(aonc); return 0; }
int qm_aonpt_reset(const qm_scss_aon_t aonc) { QM_CHECK(aonc < QM_SCSS_AON_NUM, -EINVAL); pt_reset(aonc); return 0; }
int qm_aonpt_set_config(const qm_aonc_t aonc, const qm_aonpt_config_t *const cfg) { QM_CHECK(aonc < QM_AONC_NUM, -EINVAL); QM_CHECK(cfg != NULL, -EINVAL); QM_AONC[aonc].aonpt_cfg = cfg->count; if (cfg->int_en) { callback = cfg->callback; callback_data = cfg->callback_data; } else { callback = NULL; } pt_reset(aonc); return 0; }
int qm_aonpt_set_config(const qm_scss_aon_t aonc, const qm_aonpt_config_t *const cfg) { QM_CHECK(aonc < QM_SCSS_AON_NUM, -EINVAL); QM_CHECK(cfg != NULL, -EINVAL); QM_SCSS_AON[aonc].aonpt_ctrl |= BIT(0); /* Clear pending interrupts */ QM_SCSS_AON[aonc].aonpt_cfg = cfg->count; if (cfg->int_en) { callback = cfg->callback; callback_data = cfg->callback_data; } else { callback = NULL; } pt_reset(aonc); return 0; }