Sheet 1
TimeLine(NOV,2015)
  11.02
    fix bug: libmpdclient cann't send order to itself
      127.0.0.1
    整合libmpdclient代码,并提交新版本到新分支
    成功整合android studio & gdb
      set solib-search-path ./obj/local/armeab:/home/rh/test/androidlib
      arm-linux-androideabi-gdb
      shell adb forward tcp:5000 tcp:5000
      target remote localhost:5000
      file /home/rh/my_code/ampd/app/src/main/obj/local/armeabi/app_process
      set solib-search-path /home/rh/my_code/ampd/app/src/main/obj/local/armeabi/
      b command_process
      info breakpoints
      bt
      c
      ps |grep ampd
      ./gdbserver :5000 --attach 23789
      set solib-search-path ./obj/local/armeabi:/home/rh/test/androidlib
    确认列表混乱解决方案
  11.03
    理解ampd造成死锁相关代码
    新建接口让master ampd控制slave mpd
    调通新接口socket通信
    封装优化socket接口代码
  11.04
    添加global_config_util, 解决配置变量问题
    解决pthread_create传递多个参数问题
    联调send a cmd to control slave
    改写socket代码,将对recv_msg放到上层调用上做处理
    添加SlaveRecvCMDUtil,让slave mpd接收到命令后执行相应命令
  11.05
    调试master mpd send cmd to slave mpd to play url
    fix socket cann't bind problem
    merge as_master分支上的代码到master分支上
    调试实现socket传递结构体参数失败
  11.06
    测试控制slave的成功率
    查找控制成功率低的原因
      pc需要重新初始化
    fix 成功率低的原因
      保存原始pc
      重新初始化pc
      fix bug: master mpd fail to control slave mpd because of the failure of binding socket
      save var: player control(pc), and init new pc for slave mpd to fix unkown bug
    交叉编译gdb,并在手机上成功运行
  11.07
    master thread 优化 & 封装
    master send player thread & signal
    cmd queue
    KEY
      GQueue - glib
        http://blog.csdn.net/pp0xx0ww0/article/details/8650192
        http://blog.csdn.net/zero_lee/article/details/7864480
        https://developer.gnome.org/glib/stable/glib-Double-ended-Queues.html
    Summary
      optimize master_send_cmd_player_thread to send cmd to slave mpd from cmd_queue
  11.09
    优化tcp_recv_cmd port
    实现slave mpd接收命令后加入队列
    将slave thread 死锁出现概率降低
    fix socket fin wait2问题
  11.10
    研究gio_channel
      link1
      link2
      link3
    整理代码,rm unuseful log
    实现超时重传处理
    json2csv
      sed -i "s/^.\{33\}//g" slave_log.txt
      python json2csv.py -i ./1107-1109_MEIZU-R13-4923/slave_log.txt -o ./1107-1109_MEIZU-R13-4923/slave_log.csv
      sed -i 's/$/,/g' ./1107_R10_5G/slave_log.txt
  11.11
    pc_new有问题,查找原因
    slave song_get_uri 有问题
    fix bug: slave_recv_cmd_thread become deadlocked
    配置ampd,让刘列体验同步效果
  11.12
    测试连接稳定性
    rm unuseful log
    拆play
    udp接收优化
    实现udp send client
  11.13
    提高ampd代码稳定性
    change to use my own cond & mutex
    联调改版ampd原型
  11.16
    查找带宽恢复后,mpd为何不会继续播放
      curl -C - --retry 20 --retry-delay 3 -o 1.mp3 http://m5.file.xiami.com/198/1198/6092/74559_10709257_l.mp3?auth_key=aad50d78128ee221deb96e0a2b82481d-1447718400-0-null
      http://www.experts-exchange.com/Programming/Languages/CPP/Q_28084048.html
      http://blog.csdn.net/yankai0219/article/details/8159351
    完善master控制slave接口
  11.17
    player control改写
      pause
      play
      set_pause
      seek
    debug slave devices 掉线问题
    动态发现slave mpd info
    master 控制slave 音量
    自动切下一首,自动发命令
  11.18
    pm install /sdcard/Download/aM
    modified func: player_control.c => pc_seek
    add slave_mpd_list to make master device can get slave devices ip
    debug slave devices 掉线问题
  11.19
    在音箱上调试同步
    reset global player control to fix the error of master device controlling slave device
    fix bug: ampd can not run in android 5.0
    key
      echo -n "" |md5sum
  11.20
    coredump ampd
    debug ampd 掉线问题
    add interface: slave pc_stop
    add interface: slave volume change
    同步模式下测试ampd同步效果
  11.21
    尝试在android studio调试两台手机
    free cjsonobj
    fix bug: broadcast can not work
    测试非同步状态下测试稳定性并修复相关bug
    测试同步状态下测试稳定性
  11.23
    测试ampd同步效果
    debug ampd 掉线原因
    optimize udp_recv_cmd code
  11.24
    optimize master & slave cmd_queue: is_queue_empty or not
    optimize timeout retransmission mechanism
    when mpc req func:setmaster, meanwhile allowing sndcmd2slave
    查找建峰发现的bug
    debug 音量变为-1问题
    测试控制一个ampd实现同步效果
  11.25
    与占勇联调speaker
      speaker控制两个
      speaker控制一个
    add func:getmpdversion
    debug: assert(audio_format_valid(&filter->in_audio_format));
  11.26
    debug:assert() 相关bug
      出现问题地方: setchannelmod
    与占勇联调cmd_queue
    测试控制一个ampd实现同步效果
  11.27
    了解p2p协议 & gdb调试大法
      info signals
      info handle
      frame <n>
      info frame
        打印出更为详细的当前栈层的信息
      info args
        打印出当前函数的参数名及其值。
      info locals
        打印出当前函数中所有局部变量及其值。
      info catch
        打印出当前的函数中的异常处理信息。
      set listsize <count>
        设置一次显示源代码的行数。
      show listsize
        查看当前listsize的设置。
      list <first>, <last>
        显示从first行到last行之间的源代码。
      list , <last>
        显示从当前行到last行之间的源代码。
      info threads
      info program
        来查看程序的是否在运行，进程号，被暂停的原因
      分割窗口
        layout：用于分割窗口，可以一边查看代码，一边测试：
        layout src：显示源代码窗口
        layout asm：显示反汇编窗口
        layout regs：显示源代码/反汇编和CPU寄存器窗口
        layout split：显示源代码和反汇编窗口
        Ctrl + L：刷新窗口
      相关链接
        http://blog.csdn.net/haoel/article/details/2879
        http://linuxtools-rst.readthedocs.org/zh_CN/latest/tool/gdb.html
        http://linuxtools-rst.readthedocs.org/zh_CN/latest/base/01_use_man.html
    优化转发接口
    优化mpdlist
      去除重复slave_ip
    研究转发ampd代码
    ln 目录软连接
      ln -sv ~/my_code/ampd/app/src/main/ ~/my_code/mpd_debug
  11.28
    优化slave ip list
    save mpd state to filedbUtil
    整个mpd state 到mz_sync.c
  11.30
    mz_sync整合代码单元测试
    上电设置同步模式
    看mz_sync代码
    update fileDBUtil.c: set & get slaveip/sn
    add func: regain_mpdstate() / match_with_mpd_list
    update mzsync.c: get & set mpdstate/groupstate/ip
    update slave_seek: when master send cmd2slave, master don't wait response from slave device