This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-EM-CC2340R5:为什么不能 Profile_Change 在 SimpleGattProfile_writeAttrCB ()中直接调用 pfnSimpleGrass()?

Guru**** 1821780 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1359589/lp-em-cc2340r5-why-can-not-call-pfnsimplegattprofile_change-in-simplegattprofile_writeattrcb-directly

器件型号:LP-EM-CC2340R5
为什么要进行 SimpleGattProfile_callback -> BLEAppUtil_invokeFunction -> SimpleGattProfile_invokeFromContext -> simpleGattProfile_appCBs->pfnSimpleGFWAS  simple_profile.c 中的 Profile_Change?
为什么不能   Profile_Change   在 SimpleGattProfile_writeAttrCB()中直接调用 simpleGattProfile_appCBs->pfnSimpleGross()) ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这样做是为了确保回调在 BLE 任务上下文中执行。 在中断上下文中或在未向 ICall 订阅的任务中调用 BLE API 可能会导致意外行为或 iCall_Aborts。 调用函数可确保从正确的上下文调用该函数。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "BLE 任务上下文"到底是什么?

    您是否认为 SimpleGattProfile_writeAttrCB 是中断例程?

    何时需要"BLE 任务背景"?

    为什么不使用消息队列?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我认为 SimpleGattProfile_writeAttrCB ()应该在 BLE 任务上下文中运行,但使用 invoke ()函数可以使额外的处理在适当的时间完成。 如果我没弄错、调用函数本质上会在后台使用消息队列来运行。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "BLE 任务上下文"到底是什么? 是 RTOS 任务吗?  何时需要"BLE 任务背景"? 我应该如何确定何时使用以及何时不使用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    当我说"BLE Task Context"时、我的意思是调用任务是 BLE 任务。 您只需从 BLE 任务上下文中调用 BLE API (例如 GATT 和 GAP 函数)、而其他函数(例如驱动程序 API 或您自己的定制 API)不需要从该上下文中调用。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还是没有得到它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    不用担心。 当我提到调用任务时、这是调用特定函数的任务。 这也称为任务上下文。 任务上下文的一个示例是中断上下文(在触发中断且运行的任务源自 ISR 时发生)。 另一个示例是 BLE 任务上下文、是在 basic_ble 项目中初始化 BLE 堆栈时默认旋转的任务。 此任务订阅 ICall 并设置所有适当的回调以便能够调用 BLE API。 如果您在 BLE 任务上下文中、如果您暂停执行、并且在堆栈跟踪中、您可以看到这些函数源自 bleapputil 任务函数。

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、我们不知道何时何地使用  BLEAppUtil_invokeFunction  和  SimpleGattProfile_invokeFromFWContext  直到我们调试?

    我认为这不是发展的正确方法。 我们应该知道在什么情况下以及为什么要使用这些方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    为清楚起见、仅 GAP/GATT 函数需要调用函数。 其他功能不需要它们。 因此、您无需等到进行调试即可确定是否应在 BLE 任务上下文中进行调用。 如果函数是 BLE API (例如 GAP/GATT 函数)、则必须在 BLE 任务函数中调用它、这可以使用调用函数来完成。

    此致、

    1月