/* This gets called to indicate an incoming call */ void gn_atem_call_passup(gn_call_status CallStatus, gn_call_info *CallInfo, struct gn_statemachine *state) { dprintf("gn_atem_call_passup called with %d\n", CallStatus); switch (CallStatus) { case GN_CALL_Incoming: IncomingCallNo = CallInfo->call_id; gn_atem_modem_result(MR_RING); ModemRegisters[REG_RINGCNT]++; gn_atem_cid_out(CallInfo); if (ModemRegisters[REG_RINGATA] != 0) gn_atem_answer_phone(); break; case GN_CALL_LocalHangup: case GN_CALL_RemoteHangup: if (IncomingCallNo > 0) { gn_atem_cpi(GSMD_CALLPROG_DISCONNECT, GSMD_CALL_DIR_MT, 0); gn_atem_cpi(GSMD_CALLPROG_RELEASE, GSMD_CALL_DIR_MT, 0); } IncomingCallNo = -1; break; default: break; } }
/* This gets called to indicate an incoming call */ void gn_atem_call_passup(gn_call_status CallStatus, gn_call_info *CallInfo, struct gn_statemachine *state, void *callback_data) { dprintf("gn_atem_call_passup called with %d\n", CallStatus); switch (CallStatus) { case GN_CALL_Incoming: gn_atem_modem_result(MR_RING); IncomingCallNo = CallInfo->call_id; ModemRegisters[REG_RINGCNT]++; gn_atem_cid_out(CallInfo); if (ModemRegisters[REG_RINGATA] != 0) gn_atem_answer_phone(); break; case GN_CALL_LocalHangup: case GN_CALL_RemoteHangup: IncomingCallNo = -1; break; default: break; } }