Skip to content

Commit

Permalink
Merge branch 'apache:master' into linux_mutex_owner
Browse files Browse the repository at this point in the history
  • Loading branch information
rojer authored Sep 10, 2024
2 parents ecafd47 + 5effa1d commit f1f67df
Show file tree
Hide file tree
Showing 15 changed files with 419 additions and 49 deletions.
37 changes: 37 additions & 0 deletions nimble/drivers/fem/sky66405/include/sky66405/sky66405.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/


#ifndef _SKY66405_H
#define _SKY66405_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

void sky66405_rx_bypass(uint8_t enabled);
void sky66405_tx_bypass(uint8_t enabled);

#ifdef __cplusplus
}
#endif

#endif /* _SKY66405_H */
31 changes: 31 additions & 0 deletions nimble/drivers/fem/sky66405/pkg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

pkg.name: nimble/drivers/fem/sky66405
pkg.description: Driver for SKY66405 front-end module
pkg.author: "Apache Mynewt <[email protected]>"
pkg.homepage: "https://mynewt.apache.org/"
pkg.apis:
- ble_fem_pa
- ble_fem_lna
pkg.deps:
- nimble/controller

pkg.init:
sky66405_init: 999
118 changes: 118 additions & 0 deletions nimble/drivers/fem/sky66405/src/sky66405.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

#include <syscfg/syscfg.h>
#include <hal/hal_gpio.h>
#include <controller/ble_fem.h>
#include <sky66405/sky66405.h>

static struct {
uint8_t rx_bypass : 1;
uint8_t tx_bypass : 1;
} sky66405_config = {
.rx_bypass = MYNEWT_VAL(SKY66405_RX_BYPASS),
.tx_bypass = MYNEWT_VAL(SKY66405_TX_BYPASS),
};

static void
sky66405_bypass(uint8_t enabled)
{
/* this is called only if bypass is enabled which means CPS PIN is
* correctly set and there is no need to check it here.
*/
hal_gpio_write(MYNEWT_VAL(SKY66405_PIN_CPS), enabled);
}

void
ble_fem_pa_init(void)
{
sky66405_tx_bypass(0);
}

void
ble_fem_pa_enable(void)
{
if (sky66405_config.tx_bypass) {
sky66405_bypass(1);
}
}

void
ble_fem_pa_disable(void)
{
if (sky66405_config.tx_bypass) {
sky66405_bypass(0);
}
}

void
ble_fem_lna_init(void)
{
sky66405_rx_bypass(0);
}

void
ble_fem_lna_enable(void)
{
if (sky66405_config.rx_bypass) {
sky66405_bypass(1);
}
}

void
ble_fem_lna_disable(void)
{
if (sky66405_config.rx_bypass) {
sky66405_bypass(0);
}
}

void
sky66405_rx_bypass(uint8_t enabled)
{
int pin = MYNEWT_VAL(SKY66405_PIN_CPS);

if (pin >= 0) {
sky66405_config.rx_bypass = enabled;
sky66405_bypass(enabled);
}
}

void
sky66405_tx_bypass(uint8_t enabled)
{
int pin = MYNEWT_VAL(SKY66405_PIN_CPS);

if (pin >= 0) {
sky66405_config.tx_bypass = enabled;
sky66405_bypass(enabled);
}
}

void
sky66405_init(void)
{
int pin;

/* Disable bypass, we'll enable it when needed */
pin = MYNEWT_VAL(SKY66405_PIN_CPS);
if (pin >= 0) {
hal_gpio_init_out(pin, 0);
}
}
43 changes: 43 additions & 0 deletions nimble/drivers/fem/sky66405/syscfg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

syscfg.defs:
SKY66405_PIN_CPS:
description: >
GPIO pin number to control CPS signal.
When set to '-1', pin state will not be changed and it should be
driven externally.
value: -1
SKY66405_TX_BYPASS:
description: >
Enables bypass for TX which effectively disables operation as PA.
Only valid if CPS signal is controller by driver.
value: 0
SKY66405_RX_BYPASS:
description: >
Enables bypass for RX which effectively disables operation as PA.
Only valid if CPS signal is controller by driver.
value: 0

syscfg.vals.!BLE_FEM_PA:
# Enable TX bypass by default if PA is disabled
SKY66405_TX_BYPASS: 1

syscfg.vals.!BLE_FEM_LNA:
# Enable RX bypass by default if LNA is disabled
SKY66405_RX_BYPASS: 1
6 changes: 6 additions & 0 deletions nimble/host/include/host/ble_gap.h
Original file line number Diff line number Diff line change
Expand Up @@ -1582,6 +1582,12 @@ struct ble_gap_ext_adv_params {

/** Advertising Set ID */
uint8_t sid;

/** Primary PHY options */
uint8_t primary_phy_opt;

/** Secondary PHY options */
uint8_t secondary_phy_opt;
};

/**
Expand Down
Loading

0 comments on commit f1f67df

Please sign in to comment.