static void sub_print_msg (char *pData, int len) { int ix; int msg_id = *((int *)pData); buginf("\nCCAPI: cc_msg= %s, 0x=", cc_msg_name((cc_msgs_t)msg_id)); for (ix = 0; ix < len; ix++) { if ((ix % 8 == 0) && ix) { buginf(" "); } if (ix % 24 == 0) { buginf("\n"); } buginf("%02x ", *pData++); } buginf("\n"); }
static void sub_print_msg (char *pData, int len) { int row = 0; int col; #define BYTES_PER_LINE 24 char buffer[3 * BYTES_PER_LINE + 1]; int msg_id = *((int *)pData); CSFLogDebug("gsm", "CCAPI: cc_msg=%s, len=%d", cc_msg_name((cc_msgs_t)msg_id), len); while (len) { buffer[0] = '\0'; for (col = 0; (col < BYTES_PER_LINE) && len; col++) { snprintf(buffer + (3 * col), 4, "%02X ", *pData); pData++; len--; } CSFLogObnoxious("gsm", "%04X %s", row * BYTES_PER_LINE, buffer); row++; } }
sm_rcs_t sm_process_event (sm_table_t *tbl, sm_event_t *event) { static const char fname[] = "sm_process_event"; int state_id = event->state; int event_id = event->event; sm_rcs_t rc = SM_RC_ERROR; fsm_fcb_t *fcb = (fsm_fcb_t *) event->data; cc_feature_t *feat_msg = NULL; line_t line_id; fsm_types_t fsm_type; callid_t call_id; sm_function_t hdlr; /* cached handler in order to compute its addr once */ /* * validate the state and event * and that there is a valid function for this state-event pair. */ if ((state_id > tbl->min_state) && (state_id < tbl->max_state) && (event_id > tbl->min_event) && (event_id < tbl->max_event)) { rc = SM_RC_DEF_CONT; /* * Save some paramters for debuging, the event handler may * free the fcb once returned. */ fsm_type = fcb->fsm_type; call_id = fcb->call_id; if ((hdlr = tbl->table[tbl->max_event * state_id + event_id]) != NULL) { FSM_DEBUG_SM(DEB_F_PREFIX"%s %-4d: 0x%08lx: sm entry: (%s:%s)\n", DEB_F_PREFIX_ARGS(FSM, fname), fsm_type_name(fsm_type), call_id, tbl->table[tbl->max_event * state_id + event_id], fsm_state_name(fsm_type, state_id), cc_msg_name((cc_msgs_t)(event_id))); rc = hdlr(event); } if (rc != SM_RC_DEF_CONT) { /* For event_id == CC_MSG_FEATURE then display the * feature associated with it. */ if (event_id == CC_MSG_FEATURE) { feat_msg = (cc_feature_t *) event->msg; } line_id = ((cc_feature_t *) event->msg)->line; DEF_DEBUG(DEB_L_C_F_PREFIX"%-5s :(%s:%s%s)\n", DEB_L_C_F_PREFIX_ARGS(GSM, line_id, call_id, fname), fsm_type_name(fsm_type), fsm_state_name(fsm_type, state_id), cc_msg_name((cc_msgs_t)(event_id)), feat_msg ? cc_feature_name(feat_msg->feature_id):" "); } } /* * Invalid state-event pair. */ else { GSM_ERR_MSG(GSM_F_PREFIX"illegal state-event pair: (%d <-- %d)\n", fname, state_id, event_id); rc = SM_RC_ERROR; } return rc; }