入口函数load_module
    load_config
    ast_channel_register console_tech
    ast_cli_register_multiple
    
console_tech需要提供一系列的毁掉函数,比如    
    static struct ast_channel_tech console_tech = {
    .type = "Console",
    .description = "Console Channel Driver",
    .requester = console_request,
    .send_digit_begin = console_digit_begin,
    .send_digit_end = console_digit_end,
    .send_text = console_text,
    .hangup = console_hangup,
    .answer = console_answer,
    .read = console_read,
    .call = console_call,
    .write = console_write,
    .indicate = console_indicate,
    .fixup = console_fixup,
    };

answer一般会启动monitor thread

sample: chan_console.c

http://svn.asterisk.org/svn/asterisk/trunk/channels/chan_oss.c

https://code.google.com/p/asterisk-chan-dongle/

讨论

http://lists.digium.com/pipermail/asterisk-dev/2008-January/031719.html

load_module
    ast_calloc gpublic
    pdiscovery_init
        cache_init
            AST_RWLIST_HEAD_INIT
    public_state_init
        reload_config
        discovery_restart
            ast_pthread_create_background( do_discovery )
            the thread loops all devices
                看看要做啥就做啥,比如
                打开设备opentty
                start_monitor monitor_thread do_monitor_phone
                    该线程监视data_fd和audio_fd
                        port_status
                            tcgetattr
                        at_wait
                        at_read
                        PVT_STAT
                        at_read_result_iov
                        at_read_result_classification
                        at_response
                移除设备AST_RWLIST_REMOVE_CURRENT, pvt_free
        ast_channel_register(&channel_tech)
        cli_register
        app_register
        manager_register
        discovery_stop
        devices_destroy
    
public_state
    devices
        a list
        AST_RWLIST_HEAD_INIT
        AST_RWLIST_RDLOCK
        AST_RWLIST_TRAVERSE
    discovery_lock
        a mutex
        ast_mutex_init
        ast_mutex_lock
        ast_mutex_destroy
    discovery_thread
        a thread
        ?

asterisk channel driver dev ref的更多相关文章

  1. golang 中 channel 的详细使用、使用注意事项及死锁分析

    目录 1.什么是 channel,介绍管道 2.channel 的基本使用 3.channel 的使用场景 4.使用 channel的注意事项及死锁分析 什么是 channel 管道 它是一个数据管道 ...

  2. openerp - asterisk connector(转载)

    原文:http://www.akretion.com/open-source-contributions/openerp-asterisk-voip-connector OpenERP - Aster ...

  3. linux driver module

    本文将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的.在分析过程中,本文将以platform总线和spi主控制器的 ...

  4. 安装asterisk

    在centos6.5上: yum -y install lynx mysql-server mysql mysql-devel php php-mysql php-mbstring tftp-serv ...

  5. Asterisk重要App

    elastix82*CLI> core show application  SoftHangup -= Info about application 'SoftHangup' =- [Synop ...

  6. Asterisk 代码架构概述

    from:http://blog.csdn.net/yetyongjin/article/details/7594447 近日分析Asterisk 1.8源码.Asterisk trunk上有这篇架构 ...

  7. devices-list

    转自:https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt LINUX ALLOCATED DEVICES ...

  8. 【Python】 Django 怎么实现 联合主键?

    unique_together¶ Options.unique_together¶ Sets of field names that, taken together, must be unique: ...

  9. Linux下编译内核配置选项简介

    Code maturity level options代码成熟度选项 Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完 ...

随机推荐

  1. hdu多校(二) 1004 1007 1010

    Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. mac连接Windows远程桌面

    先打开微软官方的下载面面:http://www.microsoft.com/zh-CN/download/details.aspx?id=18140 下载远程连接客户端 http://jingyan. ...

  3. DIV字体

    1.如何设定文字字体.颜色.大小 —— 使用font font-style设定斜体,比如font-style: italicfont-weight设定文字粗细,比如font-weight: bold; ...

  4. 【转】ASP.NET Core API 版本控制

    几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...

  5. Linux,du、df统计磁盘情况不一致

    转载:http://blog.linezing.com/?p=2136 在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和 ...

  6. != 比 & 的优先级高

    #define  ACQU_OPTION_WEIXIN  8 int options = 7; int a = options & ACQU_OPTION_WEIXIN ; 则a 的结果应该是 ...

  7. 合法的MAC地址

    以太网的地址为48位,由ieee统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的.共6个字节的长度 字节 5 4 3 2 1 0  位 47..40 39..32 31..24 23..16 1 ...

  8. 《Effective Java 第二版》读书笔记

    想成为更优秀,更高效程序员,请阅读此书.总计78个条目,每个对应一个规则. 第二章 创建和销毁对象 一,考虑用静态工厂方法代替构造器 二, 遇到多个构造器参数时要考虑用builder模式 /** * ...

  9. ios数据持久化(转)

    文件系统 归档和序列化 数据库 1.文件系统 不管是Mac OS X 还是iOS的文件系统都是建立在UNIX文件系统基础之上的. 1.1 沙盒模型 在iOS中,一个App的读写权限只局限于自己的沙盒目 ...

  10. isKindOfClass in cocos2d-x

    在最新版2.*的cocos2d-x中isKindOfClass可以用如下代码代替. 未验证,不过看了引擎代码是这样写的   原代码 [s1 isKindOfClass:[DestHole class] ...