这个LED的框架和别的框架都是一样的,你看一下那个ESC的框架就明白了。
Gpio_led.c:有一个gpio_led_main()函数,这个函数里面接收“start”命令,分配结构体,然后把gpio_led_start函数放到工作队列中,在gpio_led_start函数中,调用了一个open函数打开led设备,然后就是订阅了设备状态和电池状态的主题,然后又把gpio_led_cycle加入到工作队列中了,在这个gpio_led_start里面主要的就是这个open函数,在gpio_led_cycle函数中,在这里面有一个ioctl的函数,又把gpio_led_cycle放到了工作队列中了。
Led.cpp:首先是四个C语言的函数,然后声明LED类,然后LED类里面主要有两个函数,init()和ioctl()函数。
Cdev.cpp:
在gpio_led.c里面的ioctl首先调用的是fs_ioctl.c里面的ioctl,然后在这个ioctl里面又调用的led.cpp里面的ioctl,你看ioctl的参数是能够看出来区别的。
状态指示灯就是用来指示无人机的各种状态的。例如无人机上会有各种传感器,然后在无人机刚开机的时候会进行校准,然后校准成功失败都是需要通过指示灯告诉我们,还有电池的低电量报警也是通过指示灯,还有就是校准完成以及各种状态都正常,这个时候绿灯常亮,表示可以进行解锁然后飞行。