MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / modMessagePostToMachine

Function modMessagePostToMachine

xs/platforms/esp/xsHost.c:981–1023  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

979};
980
981int modMessagePostToMachine(xsMachine *the, uint8_t *message, uint16_t messageLength, modMessageDeliver callback, void *refcon)
982{
983 modMessageRecord msg;
984
985#ifdef mxDebug
986 if (0xffff == messageLength) {
987 msg.message = NULL;
988 msg.callback = callback;
989 msg.refcon = refcon;
990 msg.length = 0;
991 xQueueSendToBack(the->dbgQueue, &msg, portMAX_DELAY);
992 return 0;
993 }
994#endif
995
996 msg.embeddedMessage = 0;
997 if (message && messageLength) {
998 if (messageLength <= sizeof(msg.message)) {
999 msg.embeddedMessage = 1;
1000 c_memmove(&msg.message, message, messageLength);
1001 }
1002 else {
1003 msg.message = c_malloc(messageLength);
1004 if (!msg.message) return -1;
1005
1006 c_memmove(msg.message, message, messageLength);
1007 }
1008 }
1009 else
1010 msg.message = NULL;
1011
1012 msg.length = messageLength;
1013 msg.callback = callback;
1014 msg.refcon = refcon;
1015
1016 if (pdTRUE == xQueueSendToBack(the->msgQueue, &msg, MODDEF_TASK_QUEUEWAIT))
1017 return 0;
1018
1019 if (msg.message && !msg.embeddedMessage)
1020 c_free(msg.message);
1021
1022 return -2;
1023}
1024
1025int modMessagePostToMachineFromISR(xsMachine *the, modMessageDeliver callback, void *refcon)
1026{

Callers 4

fxQueuePromiseJobsFunction · 0.70
didReceiveFunction · 0.70
fxReceiveLoopFunction · 0.70

Calls 1

appendMessageFunction · 0.70

Tested by

no test coverage detected