Confidential Information Copyright (C) 1996 - WinSoft Development Corporation All Rights Reserved ======================================================================== Function: CadetVxd(HWND hWnd, long lFlags) Description: Class constructor, called automatically on invocation of the class. Parameters: HWND hWnd Window handle of calling application that will handle incoming messages from the VxD. long lFlags Bit flags notifying the VxD of what type of messages to send to this application's message handler. One or more of the following message types: (OR'd together): MSGS_RBDS (messages from RBDS system, including sync/nosync) MSGS_TUNER (messages from tuner functions) MSGS_CUEPAGE (cue paging messages) MSGS_CRNNEWS (CRN news data feed) MSGS_MBSEWS (MBS EWS messages) Returns: None Comments: Since a class constructor returns no values, it will not be known at the time of invocation whether the VxD loaded and initialized successfully. It will be up to the calling application to call the IsVxdOpen member function after invocation to ensure that the VxD is available and initialized correctly. ======================================================================== Function: ~CadetVxd() Description: Class destructor, called automatically on delete of class instance. Parameters: None Returns: None Comments: When the class is destroyed, the communication with the VxD will end. ======================================================================== Function: StartSelfTest (long lMsgs) Description: Tells the VxD to do a message passing self-test. Parameters: long lMsgs Number of messages that the VxD should send to the caller. Returns: Long value of 0. Comments: The VxD will start sending the TUNER_TEST_MSG to the calling app at the rate of approximately 25 messages per second. After the specified number of TUNER_TEST_MSG's are sent, an ending message of type TUNER_TEST_END will be sent. ======================================================================== Function: IsVxdOpen(void) Description: Indicates whether the VxD initialized successfully. Parameters: None Returns: BOOL result code of TRUE (1) if VxD is active or FALSE (0) if not. Comments: All functions in the class will return a VxD failure error code if the VxD did not initialize properly. Call this member soon after constructing an instance of the class. ======================================================================== Function: GetLastError(void) Description: Returns the last error code received from the VxD. Parameters: None Returns: Error code which may be one of the following: V_NOT_OPEN The VxD is not open or couldn't initialize. V_GENERAL_ERROR A general failure type error returned from the VxD. V_TUNER_BUSY A function that depends on the tuner being idle was called while the tuner was busy tuning or searching. V_ARG_COUNT Insufficient sized arguments passed to VxD for the data to be returned. Use a larger buffer. Comments: Check this function whenever a -1 is returned from any of the other functions in the class. ======================================================================== Function: SetTunerFrequency (long lFreq) Description: Tunes the radio card to the desired frequency, in KHz. Parameters: long lFreq The frequency to tune to, in KHz. (FM range is 87700 to 107900, AM range is 530 to 1650). Returns: Long value of -1 on error or 0 on success. Comments: ======================================================================== Function: GetTunerFrequency (void) Description: Returns the currently tuned frequency. Parameters: None Returns: long value of the frequency in KHz on success, -1 on error. Comments: ======================================================================== Function: GetFmFrequencies (long *lList, long lElements) Description: Retrieves the list of FM frequencies found in the last band search. Parameters: long *lList Pointer to an array of long's which will hold the frequencies returned from the board (up to 102) long lElements Number of elements in the list passed to the function. Returns: long value of the number of frequencies returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 102) and that the second parameter accurately specifies the number of elements in the array. ======================================================================== Function: GetFmFlags (long *lList, long lElements) Description: Retrieves the list of FM flags which indicate the type of station found (Normal, RBDS, MBS). Parameters: long *lList Pointer to an array of long's which will hold the flags returned from the board (up to 102) long lElements Number of elements in the list passed to the function. Returns: long value of the number of flags returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 102) and that the second parameter accurately specifies the number of elements in the array. Flag values are 0 for normal station, STATION_TYPE_RBDS for RBDS stations and STATION_TYPE_MBS for MBS/CUE/CRN stations. ======================================================================== Function: GetFmCallLetters (char *lList, long lElements) Description: Retrieves the list of FM Call Letters for the stations. Parameters: char *lList Pointer to a character buffer of the form lList[x][5], where x should be on the order of 102. long lElements Number of elements (x * 5) in the list passed to the function. Returns: long value of the number of call letter sets returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 102) times 5 characters per station and that the second parameter accurately specifies the number of elements (x * 5) in the array. Stations that are not RBDS will return a buffer of four spaces, null terminated. Otherwise, if PI was found during search for the station, the call letters will be returned (4 characters + null). ======================================================================== Function: GetFmPtyLetters (char *lList, long lElements) Description: Retrieves the list of FM Pty Types for the stations. Parameters: char *lList Pointer to a character buffer of the form lList[x][9], where x should be on the order of 102. long lElements Number of elements (x * 9) in the list passed to the function. Returns: long value of the number of call letter sets returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 102) times 9 characters per station and that the second parameter accurately specifies the number of elements (x * 9) in the array. Stations that are not RBDS will return a buffer of eight spaces, null terminated. Otherwise, if PTY was found during search for the station, the text will be returned (8 characters + null). ======================================================================== Function: GetAmFrequencies (long *lList, long lElements) Description: Retrieves the list of AM frequencies found in the last band search. Parameters: long *lList Pointer to an array of long's which will hold the frequencies returned from the board (up to 50) long lElements Number of elements in the list passed to the function. Returns: long value of the number of frequencies returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 50) and that the second parameter accurately specifies the number of elements in the array. ======================================================================== Function: GetAmFlags (long *lList, long lElements) Description: Retrieves the list of AM flags which indicate the type of station found (Normal, RBDS, MBS). Parameters: long *lList Pointer to an array of long's which will hold the flags returned from the board (up to 102) long lElements Number of elements in the list passed to the function. Returns: long value of the number of flags returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 102) and that the second parameter accurately specifies the number of elements in the array. Flag values are 0 for normal station, STATION_TYPE_RBDS for RBDS stations and STATION_TYPE_MBS for MBS/CUE/CRN stations. ======================================================================== Function: GetAmCallLetters (char *lList, long lElements) Description: Retrieves the list of AM Call Letters for the stations. Parameters: char *lList Pointer to a character buffer of the form lList[x][5], where x should be on the order of 50. long lElements Number of elements (x * 5) in the list passed to the function. Returns: long value of the number of call letter sets returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 50) times 5 characters per station and that the second parameter accurately specifies the number of elements (x * 5) in the array. Stations that are not RBDS will return a buffer of four spaces, null terminated. Otherwise, if PI was found during search for the station, the call letters will be returned (4 characters + null). ======================================================================== Function: GetAmPtyLetters (char *lList, long lElements) Description: Retrieves the list of AM Pty Types for the stations. Parameters: char *lList Pointer to a character buffer of the form lList[x][9], where x should be on the order of 50. long lElements Number of elements (x * 9) in the list passed to the function. Returns: long value of the number of call letter sets returned or -1 on error. Comments: Make sure that there is room in the passed array for the potential number of frequencies that could be found (up to 50) times 9 characters per station and that the second parameter accurately specifies the number of elements (x * 9) in the array. Stations that are not RBDS will return a buffer of eight spaces, null terminated. Otherwise, if PTY was found during search for the station, the text will be returned (8 characters + null). ======================================================================== Function: GetFmFrequencyCount(void) Description: Returns the number of frequencies found in the last band search. Parameters: None Returns: long number of frequencies or -1 on error. ======================================================================== Function: GetAmFrequencyCount(void) Description: Returns the number of frequencies found in the last band search. Parameters: None Returns: long number of frequencies or -1 on error. ======================================================================== Function: SetAmSensitivity (unsigned uSens) Description: Sets the sensitivity level for subsequent band searches for the AM band, or direct tuning calls. Parameters: unsigned uSens One of the following defined constants: TUNER_SENS_MAX - Maximum sensitivity (weak stations) TUNER_SENS_HI - High sensitivity TUNER_SENS_MED - Medium sensitivity TUNER_SENS_LOW - Low sensitivity (strong stations) Returns: long value of 0 for success, -1 on error. Comments: Changing the sensitivity takes effect on the next direct tuning or band search call. ======================================================================== Function: SetFmSensitivity (unsigned uSens) Description: Sets the sensitivity level for subsequent band searches for the FM band, or direct tuning calls. Parameters: unsigned uSens One of the following defined constants: TUNER_SENS_MAX - Maximum sensitivity (weak stations) TUNER_SENS_HI - High sensitivity TUNER_SENS_MED - Medium sensitivity TUNER_SENS_LOW - Low sensitivity (strong stations) Returns: long value of 0 for success, -1 on error. Comments: Changing the sensitivity takes effect on the next direct tuning or band search call. ======================================================================== Function: GetAmSensitivity (void) Description: Returns the current sensitivity setting for AM as stored in the VxD. Parameters: None Returns: -1 on error, or one of the following values: TUNER_SENS_MAX - Maximum sensitivity (weak stations) TUNER_SENS_HI - High sensitivity TUNER_SENS_MED - Medium sensitivity TUNER_SENS_LOW - Low sensitivity (strong stations) ======================================================================== Function: GetFmSensitivity (void) Description: Returns the current sensitivity setting for FM as stored in the VxD. Parameters: None Returns: -1 on error, or one of the following values: TUNER_SENS_MAX - Maximum sensitivity (weak stations) TUNER_SENS_HI - High sensitivity TUNER_SENS_MED - Medium sensitivity TUNER_SENS_LOW - Low sensitivity (strong stations) ======================================================================== Function: IsTuned (void) Description: Returns whether the last station set was tuned or not. Parameters: None Returns: -1 on error, 1 if tuned or 0 if not tuned. ======================================================================== Function: IsMuted (void) Description: Returns whether the tuner portion is muted or not. Parameters: None Returns: -1 on error, 1 if muted or 0 if not. ======================================================================== Function: IsStereo (void) Description: Returns the Stereo/Mono status of the currently tuned frequency. Parameters: None Returns: -1 on error, 1 if stereo or 0 if mono. ======================================================================== Function: SetMono (void) Description: Forces subsequent tuned frequencies to be received in mono. Parameters: None Returns: 0 on success, -1 on error. Comments: This setting takes effect on the next direct tuning call. ======================================================================== Function: SetStereo (void) Description: Allows subsequent tuned frequencies to be received in stereo. Parameters: None Returns: 0 on success, -1 on error. Comments: This setting takes effect on the next direct tuning call. ======================================================================== Function: TuneUp(void) Description: Tells the tuner to tune to the next higher scanned frequency in it's list. Parameters: None Returns: -1 on error, tuned frequency on success. Comments: If the highest frequency (last entry) in the list is currently tuned, the tuner will wrap to the bottom entry in the list as the next frequency. ======================================================================== Function: TuneDown(void) Description: Tells the tuner to tune to the next lower scanned frequency in it's list. Parameters: None Returns: -1 on error, tuned frequency on success. Comments: If the lowest frequency (first entry) in the list is currently tuned, the tuner will wrap to the top entry in the list as the next frequency. ======================================================================== Function: Mute(void) Description: Tells the tuner sound output to mute. Parameters: None Returns: 0 on success, -1 on error. ======================================================================== Function: UnMute(void) Description: Tells the tuner sound output to resume. Parameters: None Returns: 0 on success, -1 on error. ======================================================================== Function: Scan(void) Description: Forces a rescan for valid frequencies in the current band. Parameters: None Returns: 0 on success, -1 on error. Comments: VxD will notify the window message handler with a message when scan is complete. Also, the last tuned station will be restored after the scan. ======================================================================== Function: AmBand(void) Description: Switches the tuner to the AM band. Parameters: None Returns: 0 on success, -1 on error. Comments: This settings takes effect on the next direct tuning or search call. ======================================================================== Function: FmBand(void) Description: Switches the tuner to the FM band. Parameters: None Returns: 0 on success, -1 on error. Comments: This settings takes effect on the next direct tuning or search call. ======================================================================== Function: GetRbdsRadioText (char *lBuff, unsigned uLeng) Description: Get the latest radio text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest radio text, or all spaces if no text has come in or the current station is not an RD(B)S station. Comments: The VxD maintains the current radio text at all times in a 65 byte buffer (64 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsCityText (char *lBuff, unsigned uLeng) Description: Get the latest city text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest city location text, or all spaces if no text has come in or the current station is not an RD(B)S station, or it doesn't transmit location information. Comments: The VxD maintains the current city text at all times in a 9 byte buffer (8 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsStateText (char *lBuff, unsigned uLeng) Description: Get the latest state text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest state location text, or all spaces if no text has come in or the current station is not an RD(B)S station, or the station does not transmit location info. Comments: The VxD maintains the current state text at all times in a 9 byte buffer (8 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsPtyText (char *lBuff, unsigned uLeng) Description: Get the latest PTY text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest PTY text, or all spaces if no text has come in or the current station is not an RD(B)S station. Comments: The VxD maintains the current PTY text at all times in a 9 byte buffer (8 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsPtynText (char *lBuff, unsigned uLeng) Description: Get the latest PTY Name text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest PTY Name text, or all spaces if no text has come in or the current station is not an RD(B)S station. Comments: The VxD maintains the current PTY Name text at all times in a 9 byte buffer (8 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsPsnText (char *lBuff, unsigned uLeng) Description: Get the latest PSN text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest PSN text, or all spaces if no text has come in or the current station is not an RD(B)S station. Comments: The VxD maintains the current PSN text at all times in a 9 byte buffer (8 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsPiText (char *lBuff, unsigned uLeng) Description: Get the latest PI text buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest PI text, or all spaces if no text has come in or the current station is not an RD(B)S station. Comments: The VxD maintains the current radio text at all times in a 5 byte buffer (4 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetCueRadioPage (char *lBuff, unsigned uLeng) Description: Get the last radio page received, if any. Parameters: char *lBuff Caller supplied buffer to receive the page into. unsigned uLeng Length of buffer in bytes. Returns: 1 on success, 0 if no page to retrieve. On success, buffer will contain the page in the following form: CCCCCC PPPPPPPPPPPP where CCCCCC is the user's capcode and PPPPPPPPPPPP is the page numeric text (0-9 and space possible). Comments: Buffer supplied must be at least 20 bytes long, with the appropriate value indicated in the uLeng parameter. Otherwise, an error is returned. Check to see if there are radio pages available, using the GetCuePageCount function. ======================================================================== Function: GetTrafficStatus (void) Description: Check if station supports traffic announcements. Parameters: None Returns: 1 if station supports Traffic announcements (transmits TP flag), 0 if station does not support Traffic Announcements, or is not an RDS station. -1 on error. ======================================================================== Function: GetCuePageCount (void) Description: Returns the number of CUE pages ready for the app. Parameters: None Returns: Number of pages available for the application, or 0 if none or error. Comments: This number is unique for each application registered with the VxD as a CUE paging application. If two apps are running and one retrieves all of the messages, the other app will still see the pages as available until it retrieves them, also. ======================================================================== Function: CueUpdatedCapcode (void) Description: Signals the VxD that a new CUE Capcode is available. Parameters: None Returns: 0 Comments: After placing the CUE Capcode in the Registry, the host application should notify the VxD via this function. The VxD will then go out to the registry and pick up the new capcode. ======================================================================== ***************** Incoming Message Notifications ******************* ======================================================================== Message: TUNER_TUNED Description: The tuner has tuned to a frequency. Parameters: UINT wParam - Least significant bit (0x01) set to 1 for Stereo, 0 for Mono Next significant bit (0x02) set to 1 for FM, 0 for AM long lParam - Frequency in kHz Comments: Notifies all registered programs that the tuner has been tuned to a new frequency. ======================================================================== Message: TUNER_SEARCHDONE Description: The tuner has completed a band search. Parameters: UINT wParam - The least significant bit (0x01) will be set to 1 for FM, 0 for AM. long lParam - 0 Comments: This message is sent after the last station is found in a search. Important note at this point: The tuner attempts to tune back to the last tuned station immediately after a search. If an attempt is made to retrieve the list of frequencies immediately after obtaining this message, a "Tuner Busy" error will be returned, as the tuner is in the middle of a tuning function. This will be fixed in the next version. ======================================================================== Message: RBDS_SYNC Description: RBDS sync detected. Parameters: UINT wParam - 0 long lParam - 0 Comments: Notification that an RBDS station has been tuned to or sync has been regained when previously lost. ======================================================================== Message: RBDS_LOSTSYNC Description: The RBDS station sync has been lost. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent whenever the current RBDS reception encounters enough errors to signify that sync has been effectively lost. ======================================================================== Message: TUNER_STEREO Description: Current station being received in stereo. Parameters: UINT wParam - 0 long lParam - 0 Comments: Notifies the application that the currently tuned station is now being received in stereo. This status is updated approximately twice a second, although no message is sent unless the status changes from mono to stereo or vice versa. ======================================================================== Message: TUNER_MONO Description: Current station being received in mono. Parameters: UINT wParam - 0 long lParam - 0 Comments: Notifies the application that the currently tuned station is now being received in mono. This status is updated approximately twice a second, although no message is sent unless the status changes from mono to stereo or vice versa. ======================================================================== Message: RBDS_HAVEPI Description: PI code obtained for RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the PI code is received and decoded. If the PI code changes, the RBDS_CHANGEDPI message will be sent subsequently. It is up to the host application to retrieve the PI text upon receiving this message. ======================================================================== Message: RBDS_HAVEPTY Description: PTY code obtained for RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the PTY code is received and decoded. If the PTY code changes, the RBDS_CHANGEDPTY message will be sent subsequently. It is up to the host application to retrieve the PTY text upon receiving this message. ======================================================================== Message: RBDS_HAVEPTYN Description: PTY Name obtained for RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the PTY Name is received and decoded. If the PTY Name changes, the RBDS_CHANGEDPTYN message will be sent subsequently. It is up to the host application to retrieve the PTY Name upon receiving this message. ======================================================================== Message: RBDS_HAVEPSN Description: PSN text obtained for RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the PSN Text is received and decoded. If the PSN Text changes, the RBDS_CHANGEDPSN message will be sent subsequently. It is up to the host application to retrieve the PSN Text upon receiving this message. ======================================================================== Message: RBDS_HAVETIME Description: Time of Day message received from RBDS station. Parameters: UINT wParam - Hour (00 to 23) long lParam - Minute (00 to 59) Comments: This message is sent as soon as a Time/Date message is received and decoded from an RBDS station. It is corrected to the local time based on the offset provided by the station from Coordinated Universal Time. The time is provided in military (24 hour) format. ======================================================================== Message: RBDS_HAVETEXT Description: Full Radio Text obtained for RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the entire Radio Text buffer is received and decoded. If the Radio Text changes, the RBDS_CHANGEDTEXT message will be sent subsequently. It is up to the host application to retrieve the Radio Text upon receiving this message. ======================================================================== Message: RBDS_HAVECITY Description: City Location has been obtained for an RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the City Location is received and decoded. If the City Location changes, the RBDS_CHANGEDCITY message will be sent subsequently. It is up to the host application to retrieve the City Location text upon receiving this message. ======================================================================== Message: RBDS_HAVESTATE Description: State Location has been obtained for an RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the State Location is received and decoded. If the State Location changes, the RBDS_CHANGEDSTATE message will be sent subsequently. It is up to the host application to retrieve the State Location text upon receiving this message. ======================================================================== Message: RBDS_CLEARTEXT Description: The Radio Text display should be cleared. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent when an RBDS station changes the Radio Text flag to indicate a new message is being transmitted. Also, as a convenience, this message is sent whenever the tuner is tuned to another station or starts scanning. The host application should clear the Radio Text display on receiving this message. (Note that the VxD buffer will be cleared when sending this message, too, so the same logic used to retrieve text can also be used to clear the text). ======================================================================== Message: RBDS_CLEARRBDS Description: All RBDS Displays (other than Radio Text) should be cleared. Parameters: UINT wParam - 0 long lParam - 0 Comments: As a convenience, this message is sent whenever the tuner is tuned to another station or starts scanning. The host application should clear the PI, PTY, PTYN, City and State displays (as applicable) on receiving this message. (Note that the VxD buffers will be cleared when sending this message, too, so the same logic used to retrieve the various items can also be used to clear each item). ======================================================================== Message: RBDS_CHANGEDPI Description: The RBDS PI Code has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the PI code has been received, this message will be sent whenever a change in PI code is detected. It can be assumed that not receiving this message after receiving a RBDS_HAVEPI message means that the PI code has been static. It is up to the host application to retrieve the latest PI Code Text upon receiving this message. ======================================================================== Message: RBDS_CHANGEDPTY Description: The RBDS PTY Code has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the PTY code has been received, this message will be sent whenever a change in PTY code is detected. It can be assumed that not receiving this message after receiving a RBDS_HAVEPTY message means that the PTY code has been static. It is up to the host application to retrieve the latest PTY Code Text upon receiving this message. ======================================================================== Message: RBDS_CHANGEDPTYN Description: The RBDS PTY Name Text has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the PTY Name text has been received, this message will be sent whenever a change in PTY Name text is detected. It can be assumed that not receiving this message after receiving a RBDS_HAVEPTYN message means that the PTY Name text has been static. It is up to the host application to retrieve the latest PTY Name Text upon receiving this message. ======================================================================== Message: RBDS_CHANGEDPSN Description: The RBDS PSN Text has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the PSN text has been received, this message will be sent whenever a change in PSN text is detected. It can be assumed that not receiving this message after receiving a RBDS_HAVEPSN message means that the PSN text has been static. It is up to the host application to retrieve the latest PSN Text upon receiving this message. ======================================================================== Message: RBDS_CHANGEDTEXT Description: The RBDS Radio Text has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the full RBDS buffer has been received, this message will be sent whenever new data is detected and placed in the Radio Text buffer that differs from what is already there. It can be assumed that not receiving this message after receiving a RBDS_HAVETEXT message means that the text has been static. It is up to the host application to retrieve the latest Radio Text upon receiving this message. ======================================================================== Message: RBDS_CHANGEDCITY Description: The RBDS City Location Text has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the City Location text has been received, this message will be sent whenever a change in City Location text is detected. It can be assumed that not receiving this message after receiving a RBDS_HAVECITY message means that the City Location Text has been static. It is up to the host application to retrieve the latest City Location Text upon receiving this message. ======================================================================== Message: RBDS_CHANGEDSTATE Description: The RBDS State Location Text has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: Once the State Location text has been received, this message will be sent whenever a change in State Location text is detected. It can be assumed that not receiving this message after receiving a RBDS_HAVESTATE message means that the State Location Text has been static. It is up to the host application to retrieve the latest State Location Text upon receiving this message. ======================================================================== Message: CUE_HAVEPAGE Description: A CUE Radio Page has been received. Parameters: UINT wParam - 0 long lParam - 0 Comments: If the application is registered with the VxD as a Cue paging receiver, then this message will be posted to the app each time a new page is received. Some pages may already be in the VxD buffer at app start time. Check the page count upon starting the application, as no message will be posted to the application on startup, only when it is already running and a new page comes in. ======================================================================== Message: RBDS_NOTRAFFIC Description: Traffic announcement has ended on an RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent when a tuned RBDS station turns off the Traffic Announcement (TA) flag, but only if the station transmits the Traffic Program (TP) flag. ======================================================================== Message: RBDS_TRAFFIC Description: Traffic announcement has started on an RBDS station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent when a tuned RBDS station turns on the Traffic Announcement (TA) flag, but only if the station transmits the Traffic Program (TP) flag. This means that this particular station is transmitting a traffic announcement at this time. If the station was just tuned, then a traffic announcement may have already been in progress as RBDS sync was established. ======================================================================== Message: TUNER_TEST_MSG Description: Test message sent to the calling app at it's request. Parameters: UINT wParam - 0 long lParam - Message counter. Comments: Once a VxD Self-Test is invoked by a calling application, the VxD will send this message for the specified number of times. Each subsequent message will carry the message number (starting with 1) in the lParam. Once the last message of this type is sent, a TUNER_TEST_END message will be sent. ======================================================================== Message: TUNER_TEST_END Description: End of VxD Message Test sequence. Parameters: UINT wParam - 0 long lParam - 0 Comments: After sending the required number of test messages to the calling application for a self-test, this message is sent last to indicate the self-test is completed. ======================================================================== New messages (v 0.20) ======================================================================== Message: TUNER_STATE Description: Informational message to new TUNER_MSGS registered client. Parameters: UINT wParam - Least significant bit (0x01) set to 1 for Stereo, 0 for Mono Next significant bit (0x02) set to 1 for FM, 0 for AM long lParam - Frequency in kHz Comments: Notifies all registered programs of the current tuner state. Message sent to all registered tuner applications when a new tuner application registers with the VxD. Note similarity to the TUNER_TUNED message. ======================================================================== New functions (v 0.20) ======================================================================== Function: SetTunerMultiple (long lFreq, unsigned uBand, unsigned uMute, unsigned uSens, unsigned uStereo, unsigned uFlags) Description: Sends a combination of commands to the tuner at once. Parameters: long lFreq Frequency to tune to, if SETMULT_FREQ flag is set. unsigned uBand Value of either TUNER_BAND_FM or TUNER_BAND_AM, if SETMULT_BAND flag is set. unsigned uMute Value of either 1 (Mute) or 0 (Unmute), if SETMULT_MUTE flag is set. unsigned uSens Value of either TUNER_SENS_MAX, TUNER_SENS_HI, TUNER_SENS_MED or TUNER_SENS_LOW, if SETMULT_SENS flag is set. unsigned uStereo Value of either TUNER_MST_STEREO or TUNER_MST_MONO, if SETMULT_MONO flag is set. unsigned uFlags OR'd value of the different flags, indicating which functions to carry out. All other functions are ignored. List: SETMULT_FREQ Tune to the indicated frequency. SETMULT_BAND Switch to the indicated band. SETMULT_MUTE Set mute status as indicated. SETMULT_SENS Set the band's sensitivity as indicated. SETMULT_MONO Set the Stereo/Mono setting as indicated. Returns: 0 on success, -1 on error (typically, tuner is already busy tuning). Comments: The VxD will ignore any values not indicated by the corresponding flag being set in the uFlags variable. The sensitivity setting, if indicated, will be set on the current band if the band is not being set with this function, or it will apply to the band being set by this function if the SETMULT_BAND flag is set. ======================================================================== New Functions (v 0.22) ======================================================================== Function: NewAmList (void) Description: Instructs the VxD to reload AM station list from registry. Parameters: None Returns: Long value of 1. Comments: The calling application is responsible for setting the "Flag" value in the AMSettings Registry key to a 0 for the primary AM list of stations or to a 1 for the alternate AM list of stations. Once the VxD has read in the new list, the message TUNER_AMLIST_DONE will be sent to all TUNER_MSGS registered applications. ======================================================================== Function: NewFmList (void) Description: Instructs the VxD to reload FM station list from registry. Parameters: None Returns: Long value of 1. Comments: The calling application is responsible for setting the "Flag" value in the FMSettings Registry key to a 0 for the primary FM list of stations or to a 1 for the alternate FM list of stations. Once the VxD has read in the new list, the message TUNER_FMLIST_DONE will be sent to all TUNER_MSGS registered applications. ======================================================================== Function: NewBothList (void) Description: Instructs the VxD to reload AM and FM station lists from the registry. Parameters: None Returns: Long value of 1. Comments: The calling application is responsible for setting the "Flag" value in the AMSettings and FMSettings Registry key to a 0 for the primary list of stations or to a 1 for the alternate list of stations for each band. Once the VxD has read in both new lists, the message TUNER_BOTHLIST_DONE will be sent to all TUNER_MSGS registered applications. ======================================================================== New messages (v 0.22) ======================================================================== Message: TUNER_AMLIST_DONE Description: The VxD just got done reading in a new list of AM stations. Parameters: UINT wParam - 0 long lParam - 0L Comments: Notifies all registered tuning programs that the VxD is working with a new list of stations, which may have been changed. Apps should request the list from the VxD to update internal arrays of stations. ======================================================================== Message: TUNER_FMLIST_DONE Description: The VxD just got done reading in a new list of FM stations. Parameters: UINT wParam - 0 long lParam - 0L Comments: Notifies all registered tuning programs that the VxD is working with a new list of stations, which may have been changed. Apps should request the list from the VxD to update internal arrays of stations. ======================================================================== Message: TUNER_BOTHLIST_DONE Description: The VxD just got done reading in a new list of AM and FM stations. Parameters: UINT wParam - 0 long lParam - 0L Comments: Notifies all registered tuning programs that the VxD is working with a new list of stations, which may have been changed. Apps should request the list from the VxD to update internal arrays of stations. ======================================================================== New Functions (v 0.23) ======================================================================== Function: DebugModeOn (void) Description: Instructs the VxD to enter tuner debug mode. Parameters: None Returns: Long value of 1. Comments: The VxD will send the calling application a message (TUNER_DEBUG_MESSAGE) each time the state of the tuning section changes. Note that an application can easily be overwhelmed with messages during a tuning or search operation. Provisions should be made for a large message queue. As many as 100 messages or more can be expected in the period of approximately a quarter of a second (0.25 sec) for a tuning operation, and as many as 200 messages or more within a second in scan mode. Note that if more than one application is registered with the VxD, only the application(s) that call this function will receive the debug messages. This is to avoid overloading other applications with unexpected debug messages. ======================================================================== Function: DebugModeOff (void) Description: Instructs the VxD to exit tuner debug mode. Parameters: None Returns: Long value of 1. Comments: The VxD will cease sending debug messages to the calling application. ======================================================================== New messages (v 0.23) ======================================================================== Message: TUNER_DEBUG_MESSAGE Description: Indicates the state of the tuner section has changed. Parameters: UINT wParam - Tuner operation in progress. long lParam - 0L Comments: Sent only when the tuner is in debug mode, and only to the application(s) which placed the tuner in debug mode. ======================================================================== New Functions (v 0.23) ======================================================================== Function: AbortScan (void) Description: Instructs the VxD to abort the current band scan. Parameters: None Returns: Long value of 1. Comments: After the current scan cycle, the band scan should quit after this message is sent. A message will still be broadcast indicating that the scan is complete. ======================================================================== Function: RdsResetAll (void) Description: Instructs the VxD to reset and restart all RDS data. Parameters: None Returns: Long value of 1. Comments: After this function is called, the VxD will have reset all internal buffers and variables regarding received RDS data. This is the state that is present just after sync is obtained on a new RDS station. Use this function to force the VxD to reload all data anew, sending new data messages as it goes. ======================================================================== New Functions (v 0.33) ======================================================================== Function: BoardAddress (void) Description: Return the current base address for the Cadet board Parameters: None Returns: Long board address, or 0 if not initialized properly. ======================================================================== New Functions (v 0.34) ======================================================================== Function: ExpectedAltFrequencies (void) Description: Return the number of expected Alternate Frequencies Parameters: None Returns: Long number of alternate frequencies as indicated by the current RDS station. May be zero or up to 25. Comments: If the RDS station currently tuned transmits a list of alternate frequencies, this number will eventually change to the number of frequencies that the station is providing. This number may be zero, or it may be up to 25. If the number is zero, then the possibility exists that the message containing the number of alternate frequencies has not been received yet. By the same token, some alternate frequencies may have already been received so that a call to AltFrequenciesCount could return a number greater than zero. ======================================================================== Function: AltFrequenciesCount (void) Description: Return the number of Alternate Frequencies received Parameters: None Returns: Long number of alternate frequencies received from the current RDS station. May be zero or up to 25. Comments: If the RDS station currently tuned transmits a list of alternate frequencies, this number will eventually change to reflect the number of frequencies received thusfar. Note that this number may not always match the number of expected frequencies returned by a call to ExpectedAltFrequencies. ======================================================================== Function: AltFrequenciesList (long *lList, long lNum) Description: Returns a list of alternate frequencies Parameters: None Returns: Long number of alternate frequencies returned by the function or -1 for error. Comments: Up to 25 frequencies may be returned, so sufficient space should be allocated and indicated for the buffer passed. Note that the frequencies could be either AM (510-1610) or FM (87600-107900). To ensure that you are getting the entire list, call this function only after calls to both AltFrequenciesCount and ExpectedAltFrequencies both return the same non-zero number. ======================================================================== New Messages (v 0.36) ======================================================================== Message: RBDS_GOT_ALTFREQS Description: Indicates all alternate frequencies are present. Parameters: UINT wParam - 0 long lParam - 0L Comments: Sent when the expected number of alternate frequencies have been received for the current RBDS station. If this message is received, the application should call AltFrequenciesCount to see how many stations are in the alternate frequency list, and AltFrequenciesList to retrieve the alternate frequency list. ======================================================================== Message: RBDS_GOT_PIN Description: Indicates a new program item number was transmitted. Parameters: UINT wParam - Program item number (PIN). See comments. long lParam - 0L Comments: When an RBDS station transmits a Program Item Number that has changed from the last PIN sent, this message will be generated with the PIN sent as the wParam. The PIN is defined as having the day of the month (1 - 31) encoded in the top 5 bits, the hour of the program (0-23) in the next 5 bits and the minute of the program (0-59) in the bottom 6 bits of the number. Retrieve the various components using the following: ProgDay = (wParam & (unsigned)0xf800) >> 11; ProgHour = (wParam & (unsigned)0x07c0) >> 6; ProgMin = (wParam & (unsigned)0x003f); ======================================================================== Message: RBDS_HAVEPSON Description: PSN text obtained for EON other station. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent only once after an RBDS station has been tuned the first time that the PSN Text for other network station under EON is received and decoded. If the PSN Text for the other network changes, the RBDS_CHANGEDPSON message will be sent subsequently. It is up to the host application to retrieve the PSN Text, if desired, for the other network station upon receiving this message. ======================================================================== Message: RBDS_CHANGEDPSON Description: PSN text obtained for EON other station has changed. Parameters: UINT wParam - 0 long lParam - 0 Comments: This message is sent each time that the PSN text of other network station changes once it is initially received. It is up to the host application to retrieve the PSN Text, if desired, for the other network station upon receiving this message. ======================================================================== New Messages (v 0.37) ======================================================================== Message: RBDS_EON_ALTFREQA Description: Indicates all EON alternate frequencies type A are present. Parameters: UINT wParam - 0 long lParam - 0L Comments: Sent when one or more alternate frequencies for EON type A have been received for the current RBDS station. If this message is received, the application should call AltFrequenciesCount to see how many stations are in the alternate frequency list, and AltFrequenciesList to retrieve the alternate frequency list. ======================================================================== Message: RBDS_EON_ALTFREQB Description: Indicates one or more EON alternate frequencies type B are present. Parameters: UINT wParam - 0 long lParam - 0L Comments: Sent when one or more alternate frequencies for EON type B have been received for the current RBDS station. If this message is received, the application should call AltFrequenciesCount to see how many stations are in the alternate frequency list, and AltFrequenciesList to retrieve the alternate frequency list. This message may be received multiple times as a list of more than one frequency is built. ======================================================================== Message: RBDS_EON_TRAFFIC Description: Indicates an EON alternate station is broadcasting traffic announcement. Parameters: UINT wParam - 0 long lParam - 0L Comments: When this message is received, a station in the EON alternate frequency list is transmitting Traffic Announcements and the controlling tuner application should tune to the first frequency found in the alternate frequencies list that is not the same as the current frequency. If tuned to another frequency, the RBDS_NOTRAFFIC message will be sent when the message is complete. The application will be responsible for keeping track of the last station to return to in this instance. ======================================================================== Function: GetRbdsPsonText (char *lBuff, unsigned uLeng) Description: Get the latest PSN text (other network) buffer contents. Parameters: char *lBuff Caller supplied buffer to receive the text into. unsigned uLeng Length of buffer in bytes. Returns: 0 on success, -1 on error. On success, buffer will contain latest PSN text for the EON other network, or all spaces if no text has come in or the current station is not an RD(B)S station broadcasting EON information. Comments: The VxD maintains the current other network PSN text at all times in a 9 byte buffer (8 bytes of text plus null terminator). Therefore, it is suggested to always pass a buffer of at least that size. Smaller buffers will return data, but it will be truncated (and always null terminated). ======================================================================== Function: GetRbdsPin (void) Description: Get the current Program Item Number (PIN). Parameters: none Returns: 0 if no program item number being transmitted. -1 on error. Otherwise, the long value of the program item number. Comments: Retrieve the various components using the following: ProgDay = (wParam & (unsigned)0xf800) >> 11; ProgHour = (wParam & (unsigned)0x07c0) >> 6; ProgMin = (wParam & (unsigned)0x003f); ======================================================================== New Messages (v 0.49) ======================================================================== Message: CRN_HAVEALERT Description: Indicates an alert has just been received via CRN Parameters: UINT wParam - 0 long lParam - 0L Comments: When an alert as broadcast via CRN is received, and the capcode on the incoming alert matches the user's capcode as specified in setup, the counter for the particular type of alert is incremented and this message is sent to all programs registered to receive messages of type MSGS_CRNALERT. ======================================================================== New functions (v 0.49) ======================================================================== Function: ClearCrnBuffer (long bufnum) Description: Clears the CRN data buffer and counters in VxD. Parameters: long bufnum Indicates buffer 0 or buffer 1. Returns: -1 on error or 1 otherwise. Comments: Tells the VxD to clear the appropriate CRN data buffer and zero out any counters, etc. to prepare it for a subsequent message. ======================================================================== Function: GetTotalCrnAlertCount () Description: Gets the total number of CRN page alerts buffered. Parameters: none Returns: long number of total alerts of all types the VxD has received and buffered. Comments: If 0 is returned, then there are no alerts of any type. Calling this function does not clear any counts. If a number > 0 is returned, then the function GetCrnAlertCount should be called for each of the 16 alert types to get a count for each type of alert. ======================================================================== Function: GetCrnAlertCount (long alertnum) Description: Gets the number of CRN page alerts by type. Parameters: long alertnum - Indicates which alert type (0 to 15) to retrieve the count for. Returns: long number of alerts for this alert type. Comments: If 0 is returned, then there are no alerts of this type. If a number > 0 is returned, then that is the count of how many alerts of this type have been sent. Calling this function clears the count for the alert type. ======================================================================== EWS Functions and messages ======================================================================== Function: GetEwsAlertText (char *buff, unsigned leng) Description: Gets the current EWS text. Parameters: char *buff Character buffer to pass to function, receives EWS text. unsigned leng Length of buffer passed to function. Returns: long error code. -1 is error, 0 is no messages active, otherwise, returns length of message returned. Comments: EWS messages can be as large as 635 bytes. Therefore, it is best to send a buffer at least that large to cover any particular message that may be sent. Call this function in response to reception of an EWS_ALERT_DATA message. ======================================================================== Message: EWS_ALERT_DATA Description: Indicates EWS text data has been received. Parameters: UINT wParam - 1 long lParam - 0L Comments: When this message is received, textual data has been captured regarding an Emergency Weather Alert. Application should call GetEwsAlertText to retrieve the text associated with the alert. ======================================================================== Message: EWS_WAKE_ACTIVATE Description: Indicates that an EWS audio alert will be sent soon. Parameters: UINT wParam - 0 long lParam - 0L Comments: Applications are put on alert that an EWS audio alert will be soon forthcoming. One possible use for this message is to sound some type of alarm to get the user's attention. ======================================================================== Message: EWS_AUDIO_FREQ Description: Indicates that an EWS audio alert is starting. Parameters: UINT wParam - 0 long lParam - Frequency of audio alert. Comments: The EWS audio alert is starting in the next few seconds. Applications should tune to the frequency indicated in the lParam parameter to enable reception of the audio portion of the alert. ======================================================================== Message: EWS_AUDIO_END Description: Indicates that an EWS audio alert is complete. Parameters: UINT wParam - 0 long lParam - 0L Comments: The EWS audio alert is finished. Application can retune and/or mute the audio, as necessary, to return to the previous state. Note that if the audio alert was not transmitted on an MBS station, you may not receive this message. ======================================================================== Registry values stored by VxD: (Items preceded by -- are keys, remaining items are values) --HKEY_LOCAL_MACHINE --SOFTWARE --WinSoft --Cadet VxD --AMSettings LastFreq (binary - frequency value last tuned to) Sens (binary - Sensitivity setting last set) Flag (binary - Which list of AM stations to use) --AMStations (If AMSettings/Flag = 0 or is not set) --0000 (one key per station found in last scan) CallLetters (text - PI Call Letters, if any) Flags (binary - flags indicating RDS/MBS/Normal station) Freq (binary - Frequency value for station) Pty (text - Pty Text for station, if any) --AltAMStations (If AMSettings/Flag = 1) --0000 (one key per station found in last scan) CallLetters (text - PI Call Letters, if any) Flags (binary - flags indicating RDS/MBS/Normal station) Freq (binary - Frequency value for station) Pty (text - Pty Text for station, if any) --FMSettings LastFreq (binary - frequency value last tuned to) Sens (binary - Sensitivity setting last set) Flag (binary - Which list of FM stations to use) --FMStations (If FMSettings/Flag = 0 or is not set) --0000 (one key per station found in last scan) CallLetters (text - PI Call Letters, if any) Flags (binary - flags indicating RDS/MBS/Normal station) Freq (binary - Frequency value for station) Pty (text - Pty Text for station, if any) --AltFMStations (If FMSettings/Flag = 1) --0000 (one key per station found in last scan) CallLetters (text - PI Call Letters, if any) Flags (binary - flags indicating RDS/MBS/Normal station) Freq (binary - Frequency value for station) Pty (text - Pty Text for station, if any) --Tuner Band (binary - AM/FM selection last set) Loc (binary - European/US version in use. Euro=1, US=0) Stereo (binary - Stereo/Mono forced setting last set) Capcode (text - Encrypted CUE Pager Capcode)Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.