Example #1
0
/**
 * @brief Gets the FSK center frequency F0
 *
 *
 * @param[in]   trx_id Transceiver identifier
 * @param[in]   freq_band Frequency band
 * @param[in]   option FSK operating mode
 * @param[out]  freq  Pointer to frequency F0
 * @param[out]  spacing Pointer to Channel spacing
 *
 * @return
 */
void get_fsk_freq_f0(trx_id_t trx_id, sun_freq_band_t freq_band,
		fsk_op_mode_t option, uint32_t *freq, uint32_t *spacing)
{
	for (uint8_t i = 0; i < FSK_CH_CENTER_FREQ0_MAP_ROW_SIZE; i++) {
		if (freq_band ==
				(uint32_t)PGM_READ_DWORD(&fsk_freq0_map[i][0]))
		{
			*freq
				= (uint32_t)PGM_READ_DWORD(
					&fsk_freq0_map[i][option]);
			break;
		}
	}
	*spacing = (uint32_t)PGM_READ_DWORD(&fsk_ch_spacing_table[option - 1]);
}
Example #2
0
/**
 * @brief Gets the Legacy OQPSK center frequency F0
 *
 *
 * @param[in]   trx_id Transceiver identifier
 * @param[in]   freq_band Frequency band
 * @param[out]  freq  Pointer to frequency F0
 * @param[out]  spacing Pointer to Channel spacing
 *
 * @return
 */
void get_leg_oqpsk_freq_f0(trx_id_t trx_id, sun_freq_band_t freq_band,
		uint32_t *freq, uint32_t *spacing)
{
	for (uint8_t i = 0; i < LEG_OQPSK_CH_CENTER_FREQ0_MAP_ROW_SIZE; i++) {
		if (freq_band ==
				(uint32_t)PGM_READ_DWORD(&leg_oqpsk_freq0_map[i]
				[0])) {
			*freq = (uint32_t)PGM_READ_DWORD(
					&leg_oqpsk_freq0_map[i][1]);

			*spacing = (uint32_t)PGM_READ_DWORD(
					&leg_oqpsk_freq0_map[i][2]);
			break;
		}
	}
}
Example #3
0
/**
 * @brief Gets the OFDM center frequency F0
 *
 *
 * @param[in]   trx_id Transceiver identifier
 * @param[in]   freq_band Frequency band
 * @param[in]   option OFDM option
 * @param[out]  freq  Pointer to frequency F0
 * @param[out]  spacing Pointer to Channel spacing
 *
 * @return
 */
void get_ofdm_freq_f0(trx_id_t trx_id, sun_freq_band_t freq_band,
		ofdm_option_t option, uint32_t *freq, uint32_t *spacing)
{
	for (uint8_t i = 0; i < OFDM_CH_CENTER_FREQ0_MAP_ROW_SIZE; i++) {
		if (freq_band ==
				(uint32_t)PGM_READ_DWORD(&ofdm_freq0_map[i][0]))
		{
			*freq
				= (uint32_t)PGM_READ_DWORD(&ofdm_freq0_map[i][
						option
						+ 1]);
			break;
		}
	}
	*spacing = (uint32_t)PGM_READ_DWORD(&ofdm_ch_spacing_table[option]);
}
Example #4
0
/**
 * @brief Gets the OQPSK center frequency F0
 *
 *
 * @param[in]   trx_id Transceiver identifier
 * @param[in]   freq_band Frequency band
 * @param[out]  freq  Pointer to frequency F0
 * @param[out]  spacing Pointer to Channel spacing
 *
 * @return
 */
void get_oqpsk_freq_f0(trx_id_t trx_id, sun_freq_band_t freq_band,
		uint32_t *freq, uint32_t *spacing)
{
	for (uint8_t i = 0; i < OQPSK_CH_CENTER_FREQ0_MAP_ROW_SIZE; i++) {
		if (freq_band ==
				(uint32_t)PGM_READ_DWORD(&oqpsk_freq0_map[i][0]))
		{
			*freq
				= (uint32_t)PGM_READ_DWORD(
					&oqpsk_freq0_map[i][1]);
			if (freq_band == EU_863) {
				*spacing = 0; /* ? */
			} else {
				*spacing = (uint32_t)PGM_READ_DWORD(
						&oqpsk_ch_spac_table[i][1]);
			}

			break;
		}
	}
}
Example #5
0
uint8_t init_api(void)
{
        if (api_version > 0)
                return XB_SUCCESS;
        
        struct xboot_jump_table_s jp;
        
        *((uint32_t *)(&jp)) = PGM_READ_DWORD(JUMP_TABLE_LOCATION);
        
        if ((jp.id[0] == 'X') && (jp.id[1] == 'B') && (jp.id[2] == 'j'))
        {
                api_version = jp.ver;
                return XB_SUCCESS;
        }
        
        return XB_ERR_NO_API;
}
Example #6
0
/**
 * @brief Gets Maximum no of channel supported by each modulation
 *
 *
 * @param[in]   trx_id Transceiver identifier
 *
 * @return      No of channels supported
 */
uint16_t get_sun_max_ch_no(trx_id_t trx_id)
{
	uint16_t max_ch = 0;
	switch (tal_pib[trx_id].phy.modulation) {
	case OFDM:
		for (uint8_t i = 0; i < OFDM_CH_CENTER_FREQ0_MAP_ROW_SIZE;
				i++) {
			if (tal_pib[trx_id].phy.freq_band ==
					(uint32_t)PGM_READ_DWORD(&ofdm_freq0_map
					[i][0])) {
				max_ch = (uint32_t)PGM_READ_DWORD(
						&ofdm_max_ch_map[i][tal_pib[
							trx_id].phy.phy_mode.
						ofdm.option
						+ 1]);
				break;
			}
		}
		break;

	case OQPSK:
		for (uint8_t i = 0; i < OQPSK_CH_CENTER_FREQ0_MAP_ROW_SIZE;
				i++) {
			if (tal_pib[trx_id].phy.freq_band ==
					(uint32_t)PGM_READ_DWORD(&
					oqpsk_freq0_map[i][0])) {
				max_ch = (uint32_t)PGM_READ_DWORD(
						&oqpsk_max_ch_map[i][1]);
				break;
			}
		}
		break;

	case FSK:
		for (uint8_t i = 0; i < FSK_CH_CENTER_FREQ0_MAP_ROW_SIZE; i++) {
			if (tal_pib[trx_id].phy.freq_band ==
					(uint32_t)PGM_READ_DWORD(&fsk_freq0_map[
						i][0])) {
				max_ch = (uint32_t)PGM_READ_DWORD(
						&fsk_max_ch_map[i][tal_pib[
							trx_id].phy.phy_mode.fsk
						.op_mode]);
				break;
			}
		}
		break;

	default:
		break;
	}
	return max_ch;
}