event.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id: event.c,v 1.1.4.1 2001/11/20 14:19:37 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. #define __NO_VERSION__
  18. #include "includes.h"
  19. #include "hardware.h"
  20. #include "message.h"
  21. #include "card.h"
  22. extern int cinst;
  23. extern board *adapter[];
  24. #ifdef DEBUG
  25. static char *events[] = { "ISDN_STAT_STAVAIL",
  26.   "ISDN_STAT_ICALL",
  27.   "ISDN_STAT_RUN",
  28.   "ISDN_STAT_STOP",
  29.   "ISDN_STAT_DCONN",
  30.   "ISDN_STAT_BCONN",
  31.   "ISDN_STAT_DHUP",
  32.   "ISDN_STAT_BHUP",
  33.   "ISDN_STAT_CINF",
  34.   "ISDN_STAT_LOAD",
  35.   "ISDN_STAT_UNLOAD",
  36.   "ISDN_STAT_BSENT",
  37.   "ISDN_STAT_NODCH",
  38.   "ISDN_STAT_ADDCH",
  39.   "ISDN_STAT_CAUSE" };
  40. #endif
  41. int indicate_status(int card, int event,ulong Channel,char *Data)
  42. {
  43. isdn_ctrl cmd;
  44. pr_debug("%s: Indicating event %s on Channel %dn",
  45. adapter[card]->devicename, events[event-256], Channel);
  46. if (Data != NULL){
  47. pr_debug("%s: Event data: %sn", adapter[card]->devicename,
  48. Data);
  49. switch (event) {
  50. case ISDN_STAT_BSENT:
  51. memcpy(&cmd.parm.length, Data, sizeof(cmd.parm.length));
  52. break;
  53. case ISDN_STAT_ICALL:
  54. memcpy(&cmd.parm.setup, Data, sizeof(cmd.parm.setup));
  55. break;
  56. default:
  57. strcpy(cmd.parm.num, Data);
  58. }
  59. }
  60. cmd.command = event;
  61. cmd.driver = adapter[card]->driverId;
  62. cmd.arg = Channel;
  63. return adapter[card]->card->statcallb(&cmd);
  64. }