|
|
|
|
@ -9,6 +9,8 @@
|
|
|
|
|
#include "chat_event.h" |
|
|
|
|
#include "../utun_instance.h" |
|
|
|
|
#include "../lib/debug_config.h" |
|
|
|
|
#include <stdio.h> |
|
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
#ifdef __ANDROID__ |
|
|
|
|
#include <android/log.h> |
|
|
|
|
@ -47,8 +49,21 @@ void chat_event_post(struct UTUN_INSTANCE* inst, int type, const uint8_t* data,
|
|
|
|
|
[40]="CALL_ERROR", [41]="DM_MESSAGES", [42]="CALL_PATH", |
|
|
|
|
[43]="RADIO_TALK", |
|
|
|
|
[44]="CALL_CONNECTION", |
|
|
|
|
[45]="DM_CONVERSATIONS", [46]="ATTACHMENT_PREPARATION", |
|
|
|
|
}; |
|
|
|
|
const char* n = (type >= 1 && type < (int)(sizeof(names) / sizeof(names[0]))) ? names[type] : "?"; |
|
|
|
|
DEBUG_DEBUG(DEBUG_CATEGORY_CHAT, "chat_event: %s(%d) data=%d bytes", n, type, len); |
|
|
|
|
if (data && len > 0) log_dump(DEBUG_LEVEL_DEBUG, DEBUG_CATEGORY_CHAT, " ", data, len); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* ID задачи не даёт позднему завершению изменить статус другой подготовки. */ |
|
|
|
|
void chat_event_attachment(struct UTUN_INSTANCE* inst, int is_dm, const char* target, const uint8_t id[16], int state) { |
|
|
|
|
char name[68]; |
|
|
|
|
int n = snprintf(name, sizeof(name), "%s%s", is_dm ? "dm:" : "", target); |
|
|
|
|
if (n <= 0 || (size_t)n >= sizeof(name) || state < 0 || state > 2) { |
|
|
|
|
DEBUG_ERROR(DEBUG_CATEGORY_MEDIA, "attachment: invalid preparation event target=%s state=%d", target, state); return; |
|
|
|
|
} |
|
|
|
|
uint8_t data[1 + 68 + 16 + 1]; |
|
|
|
|
data[0] = (uint8_t)n; memcpy(data + 1, name, (size_t)n); memcpy(data + 1 + n, id, 16); data[17 + n] = (uint8_t)state; |
|
|
|
|
chat_event_post(inst, CHAT_EVT_ATTACHMENT_PREPARATION, data, n + 18); |
|
|
|
|
} |
|
|
|
|
|