1/* $Id: event.c,v 1.4.8.1 2001/09/23 22:24:59 kai Exp $ 2 * 3 * Copyright (C) 1996 SpellCaster Telecommunications Inc. 4 * 5 * This software may be used and distributed according to the terms 6 * of the GNU General Public License, incorporated herein by reference. 7 * 8 * For more information, please contact gpl-info@spellcast.com or write: 9 * 10 * SpellCaster Telecommunications Inc. 11 * 5621 Finch Avenue East, Unit #3 12 * Scarborough, Ontario Canada 13 * M1B 2T9 14 * +1 (416) 297-8565 15 * +1 (416) 297-6433 Facsimile 16 */ 17 18#include "includes.h" 19#include "hardware.h" 20#include "message.h" 21#include "card.h" 22 23#ifdef DEBUG 24static char *events[] = { "ISDN_STAT_STAVAIL", 25 "ISDN_STAT_ICALL", 26 "ISDN_STAT_RUN", 27 "ISDN_STAT_STOP", 28 "ISDN_STAT_DCONN", 29 "ISDN_STAT_BCONN", 30 "ISDN_STAT_DHUP", 31 "ISDN_STAT_BHUP", 32 "ISDN_STAT_CINF", 33 "ISDN_STAT_LOAD", 34 "ISDN_STAT_UNLOAD", 35 "ISDN_STAT_BSENT", 36 "ISDN_STAT_NODCH", 37 "ISDN_STAT_ADDCH", 38 "ISDN_STAT_CAUSE" }; 39#endif 40 41int indicate_status(int card, int event, ulong Channel, char *Data) 42{ 43 isdn_ctrl cmd; 44 45#ifdef DEBUG 46 pr_debug("%s: Indicating event %s on Channel %d\n", 47 sc_adapter[card]->devicename, events[event - 256], Channel); 48#endif 49 if (Data != NULL) { 50 pr_debug("%s: Event data: %s\n", sc_adapter[card]->devicename, 51 Data); 52 switch (event) { 53 case ISDN_STAT_BSENT: 54 memcpy(&cmd.parm.length, Data, sizeof(cmd.parm.length)); 55 break; 56 case ISDN_STAT_ICALL: 57 memcpy(&cmd.parm.setup, Data, sizeof(cmd.parm.setup)); 58 break; 59 default: 60 strlcpy(cmd.parm.num, Data, sizeof(cmd.parm.num)); 61 } 62 } 63 64 cmd.command = event; 65 cmd.driver = sc_adapter[card]->driverId; 66 cmd.arg = Channel; 67 return sc_adapter[card]->card->statcallb(&cmd); 68} 69