Master BT Power Save Operation#

Description#

This feature explains the configuration of Power Save modes of the module. These modes can be issued at any time after Opermode command. By default, Power Save is in disable state.

There are five different modes of Power Save.

  1. Power Save mode 0

  2. Power Save mode 2

  3. Power Save mode 3

  4. Power Save mode 8

  5. Power Save mode 9

Power Save Operations#

The behavior of the module differs according to the power save mode configured.

The following terminology can be used in below section in order to describe the functionality.

Protocol

Non Connected State

Connected State

BT Classic

This mode is significant when module is in Idle (standby) state.

This mode is significant when module is in Connected mode,connected sniff mode, Discoverable mode (ISCAN) and Connectable mode (PSCAN)

In BT classic, Power Save mode 2 and 3 can be used during PAGE SCAN(Connectable mode) /INQUIRY SCAN(Discoverable mode) /Connected state. Operational behavior is as below depending on the state.

  • 08-Master-BT-Classic-Commands#1.-inquiry Scan State: In this state, the module is awake during 08-Master-BT-Classic-Commands#1.-inquiry scan window duration and sleeps until the next 08-Master-BT-Classic-Commands#1.-inquiry scan interval.

  • Page Scan State: In this state, the module is awake during page scan window duration and sleeps until the next page scan interval

  • Connected state: In this state, the module wakes up randomly based on the data transfer. Sleep duration is random in this state.

  • Connected Sniff state: In this state, the module wakes up for every sniff anchor point and wake up until the sniff timeout. Sleep duration is depends on the sniff anchor point interval in this state.

Power Save Mode 0#

In this mode the module is in active state and power save is disabled. It can be configured at any time while power save is enable with Power Save mode 2 and 3 or Power Save mode 8 and 9.

Power Save Mode 2 (GPIO-based mode)#

Once the module is configured to power save mode 2, it can be woken up either by the host or periodically during its sleep-wakeup cycle based upon the connected state intervals.

Power mode 2 is GPIO based. In ULP mode , feature_bit_map[4] has to be set in opermode command. In this mode, whenever host wants to send data to module, it gives wakeup indication by setting UULP GPIO #2. After wakeup, if the module is ready for data transfer, it sends wakeup indication to host by setting UULP GPIO #3. Host is required to wait until module gives wakeup indication before sending any data to the module.

After the completion of data transfer, host can give sleep permission to module by resetting UULP GPIO #2. After recognizing sleep permission from host, module gives confirmation to host by resetting UULP GPIO #3 and again gets back to its sleep-wakeup cycle.

Module can send received packets or responses to host at any instant of time. No handshake is required on Rx path.

Power Save Mode 3 (Message-based mode)#

Power Mode 3 is message based power save,both radio and SOC of the module are in power save mode.

Module wakes up periodically upon every deep sleep duration and gives wakeup message ("WKP") to host. Module can not be woken up asynchronously. Every time module intends to go to sleep it sends a sleep request message ("SLP") to the host and expects host to send the ack ("ACK") message. Host either sends ack ("ACK") or any other pending message. But once ack ("ACK") is sent, Host should not send any other message unless next wakeup message from module is received.

Module shall not go into complete power-save state if ack is not received from host for given sleep message. Module can send received packets or responses to host at any instant of time. No handshake is required on Rx path.

AT mode

"WKP"

"SLP"

Message From Module in Power save Mode#

Message from host in Power save Mode#

When the module is configured in a co-ex mode and WLAN is in INIT_DONE state, powersave mode 2 & 3 are valid after association in the WLAN. Whereas in BT & BLE alone modes, it will enter into power save mode (2 & 3) in all states except in standby state.

Power save mode 8#

This command has to be issued after the opermode command. Module should be in non-connected state before giving this command. Please refer the above table for the state description.

In Power Mode 8, both RF and SoC are in complete power save mode. This mode is significant when module is not connected with any AP. Power mode 8 is GPIO based. In ULP mode , feature_bit_map[4] has to be set in opermode command.

In case of LP (when ulp_mode_enable is '0'), host can wakeup the module from power save by making ULP_GPIO_5 high.

In case of ULP (when ulp_mode_enable is '1' or '2'), host can wakeup the module from power save by making UULP_GPIO_2 high.

When ulp_mode_enable is set to '0' or '1', once the module gets wakeup it continues to be in wakeup state until it gets power mode 8 commands from host.

When ulp_mode_enable is set to '2', after waking up from sleep, the module sends the following message to host when RAM retention is not enabled. After receiving this message host needs to start giving commands from beginning(opermode) as module's state is not retained.

Message From Module in ULP Mode 2#

Power save mode 9#

Power Save Mode 9 uses a Message-based handshake. In this mode, the entire module, including the radio, enters powersave mode. This mode is significant when the module is not connected with any AP.

After receiving a power save mode 9 command, the module sends SLP request to the host and waits for an ACK from the host. After the ACK is received, the module goes to sleep. The sleep timer starts when power save command is received. It can be configured by the host using the at+rsi_sleeptimer command. If the host does not set any sleep time, the timer is configured for 3 seconds by default. Upon wakeup, the module sends a wakeup message to the host and expects the host to send an ACK before it goes into the next sleep cycle. The host either sends an ACK or a message. However, once an ACK is sent, no other packet should be sent before receiving the next wakeup message.

When ulp_mode_enable is set to '2', after waking up from sleep, the module sends following message to host when RAM retention is not enabled. After receiving this message, host needs to start giving commands from beginning (opermode) as module's state is not retained.

Message From Module in ULP Mode#