Added i2cp tools for TLV320AIC2x chips (in BT200 phones, at least)
[firmerware] / src / function / Kconfig
1 # Function for the target image
2
3 menu "5. Firmerware functions"
4
5 choice
6         prompt "Primary firmware function"
7         default MAINFUNCTION_SIP_PHONE
8
9 source "src/function/Kconfig.devel"
10
11 config MAINFUNCTION_SIP_PHONE
12         bool "SIP phone over IPv6"
13         help
14           This is the customary primary function for the 0cpm firmerware.
15           It implements SIP phone functionality over IPv6.  Included are
16           facilities to obtain IPv6 connectivity on all networks.
17
18
19 config MAINFUNCTION_SIP_DOORBELL
20         bool "SIP doorbell over IPv6"
21         help
22           This is an alternative primary function for the 0cpm firmerware.
23           It implements a doorbell that is switched off until a button
24           is pressed.  As soon as the device boots, it will dial out to
25           a predefined number on a predefined server.
26
27           This is not quite the same as a phone configured as a hotline.
28           Such a phone would always be switched on, even though normal
29           use would not include calling to the device.  So, to save
30           energy, the doorbell application assumes that a phone is
31           switched off when not in use.  The device will keep itself
32           switched on until it is done with its task.
33
34
35 config MAINFUNCTION_SIP_ALARMCLOCK
36         bool "SIP alarm clock over IPv6"
37         help
38           This is an alternate primary function for the 0cpm firmerware.
39           It implements an alarm clock that does not ring the phone,
40           but rather picks up immediately and plays whatever sound
41           is sent to it.  It is imagined that a network service would
42           wake up all those souls who have a hard time hearing a
43           rooster nearby.
44
45           TODO:
46           To further implement the logic of an alarm clock, use of the
47           hook contact will make it speak out the current time.  There
48           is a facility for a button that will set the alarm to go a
49           predefined number of hours after it was pressed.  You might
50           go as far as to wire that to your bed!
51
52
53 config MAINFUNCTION_BOOTLOADER
54         bool "Bootloader"
55         select FUNCTION_NETCONSOLE
56         select FUNCTION_FIRMWARE_UPGRADES
57         help
58           Some phones have less RAM than Flash on board.  On such phones,
59           stability improves with the installation of a small bootloader
60           that is smaller than RAM.  More in general, it helps to upgrade
61           the firmerware under tight local control.
62
63           The bootloader is initiated after a power cycle if (and as long as)
64           the horn is off-hook.  This is not usually the case, so normally
65           the bootloader is skipped quickly.
66
67           While the bootloader is active, all nonvolatile partitions are
68           made available over TFTP for reading and writing.  To aid in
69           automation, ...TODO...
70
71           The bootloader does not run over IPv6 or even IPv4; it is only
72           routed locally because it runs as a TFTP server directly on top
73           of 802.2 Ethernet (LLC type 1).  You will need a special TFTP
74           client to be able to access the bootloader.
75
76           Note that the bootloader code itself can also be replaced by
77           the bootloader.  Be very careful when doing that, as there
78           will be no warning for quite a few mistakes you could make.
79
80 endchoice
81
82 config FUNCTION_SOUND_PLAYER
83         bool "Networked sound player device"
84         help
85           Configure the phone as a networked sound device.  This enables
86           computers on the LAN to send sound to the phone to have it played.
87           This is only supported on an IPv6-enabled LAN.
88
89           The protocol to use is RTP/L16, which is a standard audio/video
90           codec intended for uncompressed sample data, just like you
91           would offer to a local sound card.
92
93           You can send such RTP Multicast streams with PulseAudio, using
94           the s16ne or s16be sample format.  For information on support of
95           PulseAudio in your software, see http://www.pulseaudio.org/
96
97 config FUNCTION_RADIO
98         bool "Internet radio"
99         default y
100         help
101           Enable Internet Radio functions.  This makes the phone pickup
102           stream announcements, and play one as selected by the user.
103           The radio function works over the speaker, and stop playing
104           during phone calls.  The radio volume can be set separately
105           from other volume settings.
106
107           This function is targeted at business networks, rewarding
108           them for supplying IPv6 Multicast on their LANs.  It is only
109           supported on LANs with native IPv6.  Any stream with a suitable
110           codec (like RTP/Vorbis) that is multicasted over IPv6/UDP/RTP
111           and announced with SAP can be played back by the phone.
112
113           You could consider finding a suitable radio station on m6bone,
114           and permitting that infrastructure to get to your LAN.  This
115           would only require you to broadcast the channel listing over
116           SAP every now and then.
117
118           Do not forget to select the codecs used for streaming the
119           content.
120
121           TODO - not implemented yet.
122
123 config FUNCTION_RADIO_CHANNELS
124         int "Maximum number of channels to store"
125         default 32
126         help
127           The number of Internet Radio channels that are stored is
128           fixed.  You can specify a high enough upper limit to be
129           on the safe side.
130
131 config FUNCTION_RADIO_L16
132         bool "Internet radio with RTP/L16"
133         default y
134         depends on FUNCTION_RADIO
135         help
136           Support 16-bit linear audio coding over RTP.  This is a
137           standard audio/video codec intended for uncompressed
138           exchange of audio.  This is a lightweight version of an
139           Internet Radio, that should work well enough on any
140           speaker phone.  To feed the stream, you will probably
141           need a decoder near your multicast router.  You could
142           setup a gstreamer pipeline for this.
143
144           TODO - not implemented yet.
145           
146 config FUNCTION_RADIO_VORBIS
147         bool "Internet radio with RTP/Vorbis (read help)"
148         default n
149         depends on FUNCTION_RADIO
150         help
151           Support Vorbis over RTP (not Vorbis in the file format Ogg)
152           as a radio codec.  Any such streams announced through SAP
153           will be offered to the phone user, who can select a favourite
154           station and tune into others as they please.
155
156           Your mileage may vary -- not all phones are powerful enough
157           to decode Vorbis, and in fact some Vorbis streams could be
158           too complex to decode live.  Furthermore, this codec may
159           occupy more program memory than available on your phone.
160           You can safely try it, and enjoy it if/when it works.
161
162           TODO - not implemented yet.
163
164 config FUNCTION_RADIO_MP3
165         bool "Internet radio with RTP/MP3 (READ HELP)"
166         default n
167         depends on FUNCTION_RADIO
168         help
169           This toggle does not include MP3 support, it is a placeholder
170           to explain why it is NOT SUPPORTED.
171
172           MP3 is a tightly controlled codec, with patent license costs
173           for every single device.  It is problematic to combine patents
174           and expenses with an open source solution.  Although we would
175           have liked to support MP3, you should probably resolve matters
176           near your multicast router.  More info on MP3 licensing costs
177           can be found on http://mp3licensing.com/royalty/hardware.html
178
179           What you can do is setup a gstreamer pipeline that decodes MP3
180           and re-encodes as RTP/L16, and multicasts that over IPv6.  Note
181           that an MP3 plugin for gstreamer is kindly provided by Fluendo,
182           on http://www.fluendo.com/shop/product/fluendo-mp3-decoder/
183
184 config FUNCTION_RADIO_AAC
185         bool "Internet radio with RTP/AAC (READ HELP)"
186         default n
187         depends on FUNCTION_RADIO
188         help
189           This toggle does not include AAC support, it is a placeholder
190           to explain why it is NOT SUPPORTED.
191
192           AAC is a controlled codec, although not as badly as MP3.  To
193           avoid breaking the licenses for the codec, they may only be
194           distributed as source code, which seems too restrictive to be
195           worth the effort of adding it.  (Somewhat open for discussion.)
196
197           What you can do is setup a gstreamer pipeline that decodes AAC
198           and re-encodes as RTP/L16, and multicasts that over IPv6.  Note
199           that a plugin for gstreamer is made available in the "bad"
200           plugins collection for gstreamer, in a module named faad.
201
202 config FUNCTION_NETCONSOLE
203         bool "LAN-based console"
204         default y if DEVEL=n
205         help
206           Direct console traffic for the main application to the network.
207
208           The protocol used for this network console is Logical Link Control
209           or IEEE 802.2, more to the point LLC2 which is a bit like TCP but
210           directly on top of Ethernet.  It is only accessible to directly
211           connected computers on the same LAN, so this is very suitable to
212           release console information to a LAN.
213
214           This console can be an add-on module for other targets, or it can
215           be selected as a development target to become the main function for
216           the image being built.  In that capacity it is a good test for the
217           network drivers.
218
219           This facility is normally only of use during development, but may
220           nonetheless be compiled into end-user modules.
221
222 config FUNCTION_FIRMWARE_UPGRADES
223         bool "Support firmware upgrades"
224         default y if MAINFUNCTION_BOOTLOADER=y
225         help
226           It is possible, though not strictly required, to support
227           the download and installation of new firmware.  As normal
228           IP addresses are used, this is not as safe as the upgrades
229           that are included in the dedicated bootloader main function.
230           TODO: Also use TFTP over LLC1?
231
232           If the upgrade fails, the phone will need to be upgraded
233           through the bootloader, if it has one.
234
235           Do not select this option without considering its implications.
236
237 config FUNCTION_FIRMWARE_UPGRADES_BOOTLOADER
238         bool "Support bootloader upgrades (DANGEROUS)"
239         depends on FUNCTION_FIRMWARE_UPGRADES
240         default n
241         help
242           This is a dangerous facility!
243
244           Complete remote control over a phone is only possible if all
245           firmware, including even its bootloader, can be upgraded from
246           a remote site.  This option enables that facility.
247
248           Note that this facility makes the phone rather vulnerable.
249           Anyone with access to the phone's TFTP service will be able
250           to upload new firmware to replace it.  You do want to have a
251           tightly controlled firewall to avoid this from being abused.
252
253           TODO: a polling TFTP client may in fact be better?
254
255 endmenu