11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $Id: event.c,v 1.4.8.1 2001/09/23 22:24:59 kai Exp $ 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1996 SpellCaster Telecommunications Inc. 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This software may be used and distributed according to the terms 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of the GNU General Public License, incorporated herein by reference. 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * For more information, please contact gpl-info@spellcast.com or write: 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SpellCaster Telecommunications Inc. 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 5621 Finch Avenue East, Unit #3 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Scarborough, Ontario Canada 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * M1B 2T9 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * +1 (416) 297-8565 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * +1 (416) 297-6433 Facsimile 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "includes.h" 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "hardware.h" 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "message.h" 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "card.h" 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef DEBUG 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic char *events[] = { "ISDN_STAT_STAVAIL", 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_ICALL", 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_RUN", 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_STOP", 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_DCONN", 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_BCONN", 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_DHUP", 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_BHUP", 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_CINF", 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_LOAD", 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_UNLOAD", 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_BSENT", 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_NODCH", 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_ADDCH", 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "ISDN_STAT_CAUSE" }; 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 41475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint indicate_status(int card, int event, ulong Channel, char *Data) 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds isdn_ctrl cmd; 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 453879b6b6a8ee39b50559b2c2dd083c557d39e0f8Andrew Morton#ifdef DEBUG 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pr_debug("%s: Indicating event %s on Channel %d\n", 47475be4d85a274d0961593db41cf85689db1d583cJoe Perches sc_adapter[card]->devicename, events[event - 256], Channel); 483879b6b6a8ee39b50559b2c2dd083c557d39e0f8Andrew Morton#endif 49475be4d85a274d0961593db41cf85689db1d583cJoe Perches if (Data != NULL) { 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pr_debug("%s: Event data: %s\n", sc_adapter[card]->devicename, 51475be4d85a274d0961593db41cf85689db1d583cJoe Perches Data); 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds switch (event) { 53475be4d85a274d0961593db41cf85689db1d583cJoe Perches case ISDN_STAT_BSENT: 54475be4d85a274d0961593db41cf85689db1d583cJoe Perches memcpy(&cmd.parm.length, Data, sizeof(cmd.parm.length)); 55475be4d85a274d0961593db41cf85689db1d583cJoe Perches break; 56475be4d85a274d0961593db41cf85689db1d583cJoe Perches case ISDN_STAT_ICALL: 57475be4d85a274d0961593db41cf85689db1d583cJoe Perches memcpy(&cmd.parm.setup, Data, sizeof(cmd.parm.setup)); 58475be4d85a274d0961593db41cf85689db1d583cJoe Perches break; 59475be4d85a274d0961593db41cf85689db1d583cJoe Perches default: 60020e867c755610fa5a2a08a69707e636cf368b55Dan Carpenter strlcpy(cmd.parm.num, Data, sizeof(cmd.parm.num)); 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cmd.command = event; 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cmd.driver = sc_adapter[card]->driverId; 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds cmd.arg = Channel; 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return sc_adapter[card]->card->statcallb(&cmd); 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 69