Smart Bluetooth Forum Discussions
I am prototyping a product and wonder if drawing on the order of 50mA is acceptable for the board
Is blecm_setTxPowerInADV() still supported in SDK v2.2.2?
I can't seem to find it in any header file or documentation, though my application builds if I include a call to it.
That said, I would like to be able to vary the Tx power of the advertising packets. Is this the correct API to use?
If so, what range of values can I specify?
I read somewhere that it is -10 dBm to 4 dBm in 2dBm steps.
Is my understanding correct?
I have read through all (I think) issues in this forum regarding Tx power but do not see a clear answer.
Show LessHello,
I want to use an Anaren A20737 module to wait for a button press, and then connect to a BLE peripheral (Service and characteristics are known); and send / read some byte, and return back to sleep.
I took the anaren_hello_client project as an example, however I end up with a few problems, and I am not able to find the documentation on how to get this working.
- How should I disable the peripheral function in hello_client? I suppose I could use the bleprofile_Discoverable(NO_DISCOVERABLE, NULL) function to do this, but I suppose it should also be possible to remove a lot of code, making the example more understandable.
- I am trying to make my board connect to my peripheral device. This peripheral device shows up in the function "hello_client_advertisement_report()" function with an UUID advertising flag of "ADV_SERVICE_UUID128_MORE" instead of "ADV_SERVICE_UUID128_COMP". What should I do with this? Can I just accept this and continue connecting? I assume that this means that there are more functions than advertised in the service UUID.
- I tried to accept it, however then there is encryption required for this connection (it seems). When the program continues and reaches "hello_client_connection_up()", bleprofile_p_cfg->encr_required = 3. This is not a valid number when I look into the definition of encr_required in the BLE_PROFILE_CFG struct. From here on I loose the possibillity to find what is going on. Connection fails (trace: "Pairing failed<\r>". Source of this trace is somewhere in objectcode I guess).
Can someone help me with this? Maybe there is a better example to start working from?
I am able to connect using lightblue, or hcitool on commandline linux, and I can also write and read the required values
Show LessUsing the mybeacon sample application as a reference, we designed our BCM20736 based hardware to use P0 as the input to pause RF.
Our GPIO0 settings in platform.h are identical to the tag boards:
#define GPIO_PIN_RADIO_OFF 0
#define GPIO_SETTINGS_RADIO_OFF (GPIO_INPUT | GPIO_INIT_LOW | GPIO_BUTTON | GPIO_INT)
And our application's create() function calls:
bleprofile_configureGpioForSkippingRf(GPIO_PIN_P0, GPIO_PIN_INPUT_HIGH);
However, when we drive GPIO0 high, the advertisements stop and do not resume when we drive it back low. I am wondering that the application may have crashed.
The one difference from mybeacon is that our application uses bleprofile_Discoverable() to control advertisements, not blecm_startAdv().
Is there another way to pause RF using the GPIO that I must use if I use this API?
I am using SDK v2.2.2
Thanks
Show LessHi everybody,
i want to use PUART for communication between BCM920704 and ST chip.
but i can not handle that.
basic infomation..
- SDK : WICED-SmartReady-SDK Version: WicedBTHomeKit_001.003.001.0105
- demo application : hal_puart_app
- dev kit : BCM920704PEVAL
it is PUART setting.
--- snip ---------------------
wiced_hal_puart_select_uart_pads( 33, 0/*31*/, 0, 0);
--- snip ---------------------
i attached source file.
could you let me give a clue?
Thanks,
GyoungBo Min
Show LessWe are providing the information to our compliance test partner to begin FCC testing of our product (which contains a BCM20736S). One of the specific requests they have made is for us to provide samples that have the transmitter configured to continuously transmit on the "lowest", the "middle", and the "highest" channel.
Since BLE normally operates by hopping channels, are there SDK functions that provide the ability to lock it to a channel for testing?
Show Less• The application runs in its own thread and the entire application framework is event driven
• The main entry point of the application is APPLICATION_INIT() where the app has to register its GATT database, configurations and the application create function
• No other operations are allowed at this point
• Once this is done, the rest of the firmware and the BLE stack will be initialized - and once these are ready- the application create function will be invoked
• This is equivalent to C’s main()
• Once you return from this function, everything is event driven
• Callbacks for connection up/down/end of ADV interval/write to GATT handle, interrupts, timer expiry etc. are all events for the application to handle
• So, there is effectively no need for a main() function
Show LessHere is my code for the application I am running. The value of key_flag doesn't change when the program flow comes back to create function. Also the what is program control flow for this?
#include "bleprofile.h"
#include "bleapp.h"
#include "gpiodriver.h"
#include "string.h"
#include "stdio.h"
#include "platform.h"
#include "bleappconfig.h"
#include "cfa.h"
#include <stdio.h>
#include <stdlib.h>
#include "adc.h"
#define GPIO_PORT(x) (x/16)
#define GPIO_PIN(x) (x%16)
#define APPLICATION_ADC_INPUT_CHANNEL ADC_INPUT_P32
volatile unsigned char Key_flag;
static void ble_tx_create(void);
static void interrupt_handler (void* parameter, UINT8 arg);
static void generic_timeout( UINT32 count );
const BLE_PROFILE_GPIO_CFG ble_tx_gpio_cfg = {
{ GPIO_PIN_WP,GPIO_PIN_BUTTON, 14, GPIO_PIN_BATTERY, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{GPIO_SETTINGS_WP, GPIO_SETTINGS_BUTTON, GPIO_SETTINGS_LED, GPIO_SETTINGS_BATTERY, GPIO_SETTINGS_BUZZER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
APPLICATION_INIT(){
//ble_trace0("init_entry");
/*Initialization*/
bleapp_set_cfg(NULL, 0, NULL, NULL, (void*)&ble_tx_gpio_cfg, ble_tx_create);
//ble_trace0("init_exit");
}
void ble_tx_create(void){
ble_trace0("ble_tx_entry");
bleprofile_GPIOInit(bleprofile_gpio_p_cfg);
bleprofile_Init(bleprofile_p_cfg);
//bleprofile_regTimerCb(generic_fine_timeout, generic_timeout);
bleprofile_StartTimer();
/* initialization of adc, mandatory call on startup */
adc_config();
adc_adcCalibrate(2200, ADC_INPUT_VDD_CORE);
//register for interrupts on pin 0 (push button)
{
UINT16 masks[3] = {(1 << 1), 0 , 0};
//gpio_registerForInterrupt(masks, interrupt_handler, 0);
gpio_registerForInterrupt(masks, interrupt_handler, NULL); //gopi
}
gpio_configurePin(0,1, GPIO_EN_INT_BOTH_EDGE | GPIO_PULL_UP, GPIO_PIN_OUTPUT_LOW);
//GPIO_POLL;
ble_trace1("Key_flag =%d", Key_flag);
if(Key_flag==1) {
ble_trace0("if entry");
ble_trace1("Key_flag =%d", Key_flag);
bleprofile_LEDBlink(250, 500, 5);
bleprofile_BUZBeep(100);
Key_flag = 0;
ble_trace0("if exit");
}
else{
ble_trace0("else entry");
ble_trace1("Key_flag =%d", Key_flag);
bleprofile_LEDBlink(100, 300, 2);
bleprofile_BUZBeep(500);
//Key_flag = 0;
ble_trace0("else exit");
}
ble_trace0("ble_tx_exit");
}
void interrupt_handler(void* parameter, UINT8 arg) {
ble_trace0("In isr");
Key_flag = 1;
ble_trace1("Key_flag =%d", Key_flag);
ble_trace0("ISR exit");
}
/*
void interrupt_handler(void* parameter, UINT8 arg) {
bleprofile_LEDBlink(500, 500, 3);
bleprofile_BUZBeep(25);
ble_trace0("!!!!!!!!!!!");
generic_timeout(1);
ble_trace0("@@@@@@@@@@@");
}
*/
UINT32 application_read_adc_voltage_from_gpio(UINT8 gpio_number){
return adc_readVoltage(adc_convertGPIOtoADCInput(gpio_number));
}
/* printing adc voltage on every loop */
void generic_timeout(UINT32 arg){
ble_trace1("ADC READOUT = %6d",application_read_adc_voltage_from_gpio(32));
}
Show LessHello Sirs,
We are proceeding with the RF certification process. We are requested to indicate the
<<
Firmware Version Identification Number: The Firmware Version Identification Number (FVIN) identifies the firmware version utilized by the product which controls/affects the RF characteristics of the product.
>>
To be put into the ufficial papers. But :
the LE STACK and consequent profiles are embedded into the onchip ROM. The target application just use them, changing nothing which affects the RF behavoiur. Then I would like to indicate the ROM code version instead of target application version, which may change.
Then my question : How I can find it?
Thanks a lot,
Giuseppe
Show LessHi all
i was used same wiced sense2 project to program two wiced sensor2 kit, and these two units look like have conflict each other.
How can i avoid this problem?
thanks a lot.
Show Less