host/audio/pacs: fix notifications for available contexts

Available contexts values are per connection. When value is changed, read
access for notification gives BLE_HS_CONN_HANDLE_NONE as conn handle.
This was making impossible to fetch the right value.
Now, flag was introduced, for marking the changed value.
diff --git a/nimble/host/audio/services/pacs/src/ble_audio_svc_pacs.c b/nimble/host/audio/services/pacs/src/ble_audio_svc_pacs.c
index 25b2e04..eb3a924 100644
--- a/nimble/host/audio/services/pacs/src/ble_audio_svc_pacs.c
+++ b/nimble/host/audio/services/pacs/src/ble_audio_svc_pacs.c
@@ -29,6 +29,7 @@
     uint16_t conn_handle;
     uint16_t ble_svc_audio_pacs_avail_sink_contexts;
     uint16_t ble_svc_audio_pacs_avail_source_contexts;
+    uint8_t val_changed;
 }  ble_svc_audio_pacs_avail_contexts[MYNEWT_VAL(BLE_MAX_CONNECTIONS)] = {
     [0 ... MYNEWT_VAL(BLE_MAX_CONNECTIONS) - 1] = {
         .conn_handle = BLE_HS_CONN_HANDLE_NONE,
@@ -253,12 +254,20 @@
 ble_svc_audio_pacs_avail_audio_ctx_read_access(uint16_t conn_handle,
                                                struct ble_gatt_access_ctxt *ctxt)
 {
-    struct available_ctx *avail_ctx;
+    struct available_ctx *avail_ctx = NULL;
     uint8_t *buf;
+    int i;
 
-    avail_ctx = ble_svc_audio_pacs_find_avail_ctx(conn_handle);
-    if (!avail_ctx) {
-        return BLE_HS_ENOENT;
+    if (conn_handle == BLE_HS_CONN_HANDLE_NONE) {
+        for (i = 0; i < MYNEWT_VAL(BLE_MAX_CONNECTIONS); i++) {
+            if (ble_svc_audio_pacs_avail_contexts[i].val_changed) {
+                avail_ctx = &ble_svc_audio_pacs_avail_contexts[i];
+                avail_ctx->val_changed = false;
+                break;
+            }
+        }
+    } else {
+        avail_ctx = ble_svc_audio_pacs_find_avail_ctx(conn_handle);
     }
 
     buf = os_mbuf_extend(ctxt->om, 4);
@@ -266,6 +275,11 @@
         return BLE_ATT_ERR_INSUFFICIENT_RES;
     }
 
+    if (!avail_ctx) {
+        put_le32(buf + 0, 0);
+        return 0;
+    }
+
     put_le16(buf + 0, avail_ctx->ble_svc_audio_pacs_avail_sink_contexts);
     put_le16(buf + 2, avail_ctx->ble_svc_audio_pacs_avail_source_contexts);
 
@@ -409,6 +423,7 @@
 
     avail_ctx->ble_svc_audio_pacs_avail_sink_contexts = sink_contexts;
     avail_ctx->ble_svc_audio_pacs_avail_source_contexts = source_contexts;
+    avail_ctx->val_changed = true;
 
     return pac_notify(BLE_SVC_AUDIO_PACS_CHR_UUID16_AVAILABLE_AUDIO_CONTEXTS);
 }