void queue_put(void *queue, void *msg) { q_t * q = (q_t*) queue; list_add(&q->lh, (list_t *)msg); #ifdef DEBUG_OS cfw_log("queue_put: %p <- %p\n", queue, msg); #endif }
void * queue_wait(void *queue) { q_t * q = (q_t*) queue; void * elem = (void *)list_get(&q->lh); #ifdef DEBUG_OS cfw_log("queue_wait: %p -> %p\n", queue, elem); #endif return elem; }
void test_handle_message(struct cfw_message * msg, void * param) { cfw_log("%s:%s for param: %s conn:%p id:%d\n", __FILE__, __func__, (char*) param, msg->conn, CFW_MESSAGE_ID(msg)); //cfw_dump_message(msg); switch (CFW_MESSAGE_ID(msg)) { case MSG_ID_CFW_REGISTER_SVC_AVAIL_EVT_RSP: break; case MSG_ID_CFW_SVC_AVAIL_EVT: { int svc_id = ((cfw_svc_available_evt_msg_t *)msg)->service_id; if (svc_id == SOC_GPIO_SERVICE_ID) { cfw_open_service_conn(client, SOC_GPIO_SERVICE_ID, "Conn1"); } break; } case MSG_ID_CFW_OPEN_SERVICE_RSP: { cfw_log("%s:%s for conn: %s\n", __FILE__, __func__, (char*) CFW_MESSAGE_PRIV(msg)); cfw_open_conn_rsp_msg_t * cnf = (cfw_open_conn_rsp_msg_t*) msg; gpio_service_conn = cnf->service_conn; gpio_configure(gpio_service_conn, 26, 1, NULL); break; } case MSG_ID_GPIO_CONFIGURE_RSP: gpio_set_state(gpio_service_conn, 26, 1, NULL); break; case MSG_ID_GPIO_SET_RSP: { int val; void * next; if (!((int) CFW_MESSAGE_PRIV(msg))) { val = 0; next = (void*) 1; } else { val = 1; next = (void*) 0; } printf("Got response: %d %d \n", val, (int) next); if (count ++ > 100) { cfw_close_service_conn(gpio_service_conn, NULL); } else { gpio_set_state(gpio_service_conn, 26, val, next); } } break; case MSG_ID_CFW_CLOSE_SERVICE_RSP: { cfw_close_conn_rsp_msg_t * resp = (cfw_close_conn_rsp_msg_t*) msg; cfw_log("%s: res: %d\n", __func__, resp->rsp_header.status); exit(0); } break; default: { cfw_log("%s: Unhandled message: %d\n", __func__, CFW_MESSAGE_ID(msg)); break; } } cfw_msg_free(msg); }