今天的主要工作在于写播放器的音量调节,昨晚解决了多线程的问题。
1.如何获取键盘输入?
2.如何在播放过程中,实现播放器音量的调节?
3.如何在播放过程中实现暂停,播放,上一曲下一曲?
目前的机制是计算要播放的音乐,开始解码播放,完毕后计算下一曲应播放什么音乐,其缺点在于播放过程中无法利用键盘端的事件进行调节
看了一下,在output函数中判断flag改变输出值,可以打断播放,但是无法恢复
目前只能在一首歌放完后才会判断下一首是什么,比较合理的方法是,在播放过程中不断的判断当前歌曲,如果不一致,则跳出播放,改为播放新的歌曲。
说到底,用现成的函数,就无法掌控解码播放的全过程,不清楚其工作原理。
目前看到的暂停的修改方式是不断改continue打断input的解码
又看了一篇博客,加深了对机制的理解,考虑将input和output分离开
中间可以插入控制,即控制指令只在帧的间隔生效。
目前实现了播放和解码的分离,但是多曲连播不正常,原因待查
接手了查找程序崩溃原因的任务,拿到了core_dump和使用-g编译的gdb程序
发现崩溃发生在uClibc中,无法查看对应的库代码,也找不到对应的顶层代码
1.考虑先确认发生在哪个线程中,思路是程序初始化创建线程时,记录下对应线程号和功能供后续查看。【经确认,gdb中的线程号ID和实际的tid是不同的,暂时未找到如何一一对应的办法,需确认程序是否只在一开始的时候进行线程的创建——配网过程会起线程,配网结束则销毁,可确认并非该线程导致的错误】
2.因为使用了动态库,程序中没有对应的符号表,导致无法定位,考虑改用静态编译方法,需要准备好对应的静态库,若已有对应的静态库,则需要修改makefile文件。
目前已经有的线索只有该崩溃时间不定,已经确认该崩溃发生在网关模块
配网问题
失败以后
A:nr B:reboot C:firstboot D:修改config/wireless中的wifi信息
交叉测试A,0 AD,0 B,0 BD,0 C,1
对比了配网前后的wireless文件,发现存在三处不同:
第一处是auto的单引号有无
第二处 hidden是单双引号
第三处 ssid的顺序
从origin出发单变量依次全部排除
发现是脚本ssid和passwd反了,发现ios app 端写反了,导致ikcc端写反。