1. borceg's Avatar
    Well, there's an API for FM radio in latest Cascades Beta 2 and PB NDK 2.0.1/2.1. Can somebody use it in order to make real FM radio app ?

     * Copyright 2009, QNX Software Systems Ltd. All Rights Reserved.
     * This source code may contain confidential information of QNX Software
     * Systems Ltd.  (QSSL) and its licensors. Any use, reproduction,
     * modification, disclosure, distribution or transfer of this software,
     * or any software which includes or is based upon any of this code, is
     * prohibited unless expressly authorized by QSSL by written agreement. For
     * more information (including whether this source code file has been
     * published) please email licensing@qnx.com.
     *      dmcd_radio.h
    #include <devctl.h>
    typedef struct _radio_tuner {
    	char			name[32];
    #define RADIO_CAP_MONO		0x01
    #define RADIO_CAP_STEREO	0x02
    #define RADIO_CAP_VOLUME	0x04
    #define RADIO_CAP_RDS		0x08
    #define RADIO_CAP_SEEK		0x10
    #define RADIO_CAP_PRESETS	0x20
    #define RADIO_CAP_ATTR_SAVE	0x40
    	_Uint32t		cap;
    	_Uint32t		attr;				// RADIO_ATTR_MONO, RADIO_ATTR_STEREO
    	_Uint32t		volume;				// percent
    #define RADIO_SPACING_200KHZ		200000
    #define RADIO_SPACING_100KHZ		100000
    #define RADIO_SPACING_50KHZ			50000
    	_Uint32t		spacing;			// 50kHz, 100kHz (Europe, Japan), 200kHz (USA, Australia)
    	_Uint32t		current;
    #define RADIO_BAND_EU_LOW			87500000
    #define RADIO_BAND_EU_HIGH			108000000
    #define RADIO_BAND_JAPAN_LOW		76000000
    #define RADIO_BAND_JAPAN_HIGH		90000000
    #define RADIO_BAND_JAPAN_WIDE_LOW	76000000
    #define RADIO_BAND_JAPAN_WIDE_HIGH	108000000
    	_Uint32t		band_low;
    	_Uint32t		band_high;
    	_Uint32t		presets[12];
    	_Uint32t		rsvd[10];
    } RadioTuner_t;
    typedef struct _radio_tune {
    #define RADIO_TUNE_FREQ		0x00
    #define RADIO_TUNE_PRESET	0x01
    #define RADIO_SEEK_UP		0x02
    #define RADIO_SEEK_DOWN		0x04
    #define RADIO_SEEK_WRAP		0x08
    	_Uint32t		op;
    	_Uint32t		arg;				// frequency/preset num
    #define RADIO_DFLT_TIMEOUT	0
    	_Uint32t		timeout;			// timeout in seconds
    	_Uint32t		rsvd[5];
    } RadioTune_t;
    typedef struct _radio_freq {
    	_Uint32t		attr;				// signal attibutes (RADIO_ATTR_MONO, RADIO_ATTR_STEREO)
    	_Uint32t		ssi;				// signal strength indicator (percent)
    	_Uint32t		frequency;			// currently tuned frequency
    	_Uint32t		rsvd[5];
    } RadioFreq_t;
    typedef struct _radio_attr {
    #define RADIO_ATTR_MONO			0x01
    #define RADIO_ATTR_STEREO		0x02
    #define RADIO_ATTR_VOLUME		0x04
    #define RADIO_ATTR_BAND			0x08	// data[0] = band low, data[1] = band high
    #define RADIO_ATTR_SPACING		0x10	// data[0] = spacing
    #define RADIO_ATTR_PRESETS		0x20	// data[0] = preset[0] ... preset[11]
    #define RADIO_ATTR_SAVE			0x40
    	_Uint32t		attr;
    	_Uint32t		attr_data[20];
    } RadioAttr_t;
    typedef struct _radio_rds_group {
    	_Uint8t			bler[4];
    	_Uint16t		blocks[4];
    } RadioRdsGroup_t;
    typedef struct _radio_rds {
    	_Uint32t		length;
    	RadioRdsGroup_t	groups[128];
    } RadioRds_t;
    #define DCMD_RADIO_INFO			_IOR( 'Z', 0x01, struct _radio_tuner )	
    #define DCMD_RADIO_CTRL			_IOW( 'Z', 0x02, struct _radio_attr )	
    #define DCMD_RADIO_TUNE			_IOW( 'Z', 0x03, struct _radio_tune )	
    #define DCMD_RADIO_FREQ			_IOR( 'Z', 0x04, struct _radio_freq )
    #define DCMD_RADIO_RDS			_IOR( 'Z', 0x05, struct _radio_rds )
    __SRCVERSION( "$URL: http://svn/product/branches/deckard/GR2_0_0/services/audio/public/include/ado_pcm/dcmd_radio.h $ $Rev: 219613 $" )
    08-13-12 04:03 AM
  2. masterscarhead1's Avatar
    I don't think Playbook has the functionality built in. Remember that cascades will run on the 4G version and also the BB10 phones. Hence, it could be coding for that.
    And note that this is from 2009, so i think if it was possible (or legal, note the copyright paragraph), it would have been done.
    08-13-12 05:53 AM
  3. borceg's Avatar
    Well, hardware for fm radio is present on our wifi playbooks (Texas Instruments WL1283 GPS/WLAN/Bluetooth/FM). This header file is from official audio api for qnx os. Audio Developer's Guide [6.5.0 SP1]
    08-13-12 06:23 AM
  4. backfire101's Avatar
    Great, so now what about a fm radio app that will use the hardware.
    08-13-12 06:37 AM
  5. GreyGhostRos's Avatar
    Question is whether they connected an antenna to it or not..
    08-13-12 09:24 AM
  6. samab's Avatar
    Since the day of the Sony Walkman, the FM antenna is usually your headphone cable.
    08-13-12 03:11 PM
  7. dave1701's Avatar
    That doesn't mean they connected it to the headphone port.
    08-13-12 03:24 PM
  8. jomamasan's Avatar
    I'd like to see it too.
    I'd pay for an app if the fm chip could be activated.
    The Ifixit teardown...BlackBerry PlayBook Teardown - iFixit
    08-13-12 06:36 PM
  9. samab's Avatar
    That doesn't mean they connected it to the headphone port.
    You are correct. For other handset manufacturers, the above technical information about a particular chipset having an FM feature generally means nothing. However, RIM has a history of using the headphone cable as FM antenna for their handsets.
    08-14-12 12:17 AM
  10. jomamasan's Avatar
    It's true the chip itself is no indication that the fm will work. The antennae pin has to be connected and driver software of some kind needs to be present. In some android units/roms fm_drv.ko for instance.

    Here is a link to someone who has done some nice work with these chips including TI under android. His app let me use the FM chip in my Samsung Galaxy 5 WITHOUT the headphones connected which Samsungs FM player won't do.

    Thought I'd throw it out there if anyone is interested.

    [APP] Spirit FM: Broadcom,Texas Instruments,Samsung Silicon Labs & Qualcomm FM chips - xda-developers
    08-15-12 02:38 PM