summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-08-07 00:01:25 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-08-07 00:01:25 +0300
commite15fb33e109983ced35f14c674e0aa1d47dbc357 (patch)
treea295c1b03586a61f4eea4219a92263d20b541078
parentcbef0dba2eef29757237dfe4bca3d21e6a81a0ba (diff)
downloadmicropython-e15fb33e109983ced35f14c674e0aa1d47dbc357.tar.gz
micropython-e15fb33e109983ced35f14c674e0aa1d47dbc357.zip
extmod/modwebrepl: Add GET_VER operation to query MicroPython version.
-rw-r--r--extmod/modwebrepl.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/extmod/modwebrepl.c b/extmod/modwebrepl.c
index 6820bbab43..4e3780fa4d 100644
--- a/extmod/modwebrepl.c
+++ b/extmod/modwebrepl.c
@@ -38,6 +38,7 @@
#include "py/mphal.h"
#endif
#include "extmod/modwebsocket.h"
+#include "genhdr/mpversion.h"
#if MICROPY_PY_WEBREPL
@@ -57,7 +58,7 @@ struct webrepl_file {
char fname[64];
} __attribute__((packed));
-enum { PUT_FILE = 1, GET_FILE, LIST_DIR };
+enum { PUT_FILE = 1, GET_FILE, GET_VER };
enum { STATE_PASSWD, STATE_NORMAL };
typedef struct _mp_obj_webrepl_t {
@@ -128,6 +129,20 @@ STATIC int write_file_chunk(mp_obj_webrepl_t *self) {
}
STATIC void handle_op(mp_obj_webrepl_t *self) {
+
+ // Handle operations not requiring opened file
+
+ switch (self->hdr.type) {
+ case GET_VER: {
+ static char ver[] = {MICROPY_VERSION_MAJOR, MICROPY_VERSION_MINOR, MICROPY_VERSION_MICRO};
+ write_webrepl(self->sock, ver, sizeof(ver));
+ self->hdr_to_recv = sizeof(struct webrepl_file);
+ return;
+ }
+ }
+
+ // Handle operations requiring opened file
+
mp_obj_t open_args[2] = {
mp_obj_new_str(self->hdr.fname, strlen(self->hdr.fname), false),
MP_OBJ_NEW_QSTR(MP_QSTR_rb)