Skip to content

Instantly share code, notes, and snippets.

View cpq's full-sized avatar
🎭
Купатися чи не купатись?

Sergey Lyubka cpq

🎭
Купатися чи не купатись?
View GitHub Profile
@cpq
cpq / print_linked_list.c
Created September 7, 2019 14:25
Print singly linked list in reverse order
#include <stdio.h>
struct entry {
int value;
struct entry *next;
};
static void out(struct entry *e) {
if (e->next != NULL) out(e->next);
printf("%d\n", e->value);
@cpq
cpq / main.c
Last active September 27, 2019 12:05
ESP-IDF mDash skeleton firmware code
// Copyright (c) Cesanta Software Limited
// All rights reserved
#include "main.h"
#define REPORT_FREQUENCY_MS 5000
// This function is called by the main superloop every 10ms.
// We trigger shadow update each REPORT_FREQUENCY_MS milliseconds.
// The other way to do it is to start a dedicated FreeRTOS task.
@cpq
cpq / parser.c
Last active September 1, 2019 18:07
Simple recursive descent expression parser
// Copyright (c) 2019 Sergey Lyubka
// All rights reserved
#include <stdio.h>
#include <string.h>
enum { TOK_EOF = '#', TOK_NUM = 'N', TOK_IDENT = 'I' };
enum { ERR_OK, ERR_EXPECTED_NUM, ERR_EXPECTED_PAREN };
//#define DEBUG(fmt, ...) printf("%s:" fmt "\n", __func__, __VA_ARGS__)
#define DEBUG(fmt, ...)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>mDash Smart Light</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
@cpq
cpq / preact.html
Last active July 16, 2019 14:40
minimal preact app with ES3 syntax
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/preact"></script>
</head>
<body> </body>
<script>
var h = preact.h;
var App = function(props) {
#include <mDash.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
#define WIFI_NAME "XX"
#define WIFI_PASS "YY"
#define DEVICE_ID "d1"
var https = require('https');
// Same as:
// curl -H 'Content-Type: application-json' -d PARAMS
// https://mdash.net/api/v2/devices/DEVICE_ID/rpc/METHOD?access_token=TOKEN
var mdashRequest = function(apiToken, deviceID, method, params, func) {
return new Promise(function(resolve, reject) {
var received = '';
var strParams = JSON.stringify(params || {});
var url = 'https://mdash.net/api/v2/devices/' + deviceID + '/rpc/' +
@cpq
cpq / bt.sh
Last active May 4, 2019 12:25
Symbolizing Arduino backtrace dump for ESP32 (MacOS version)
#!/bin/sh
# Usage:
# sh bt.sh sketch_Apr25 400d4e36:0x3ffb1e50 0x400d1bce:0x3ffb1e90 0x400d1d96:0x3ffb1ee0 0x400d5a8d:0x3ffb1f30
ARDUINO_DIR=$HOME/Documents/Arduino
A2LINE=$ARDUINO_DIR/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-addr2line
ELF=$(find /var/folders/ -name $INO.elf 2>/dev/null)
INO=$1
shift
@cpq
cpq / rest.js
Created December 6, 2018 09:01
Minimal REST nodejs server
var http = require('http');
var port = 8080;
var server = http.createServer(function(request, response) {
console.log('Requested URI:', request.url);
response.writeHead(200, {'Content-Type': 'application/json'});
response.write(JSON.stringify({a: 1, b: 2}), 'utf-8');
response.end();
});
server.listen(parseInt(port, 10));
@cpq
cpq / mgos_conf_shadow.c
Created October 19, 2018 17:26
config via shadow
#include "mgos.h"
#include "mgos_rpc.h"
#include "mgos_shadow.h"
static void report_state_to_the_shadow(void) {
const struct mgos_conf_entry *schema =
mgos_conf_find_schema_entry("KEY", mgos_config_schema());
struct mbuf mb;
mbuf_init(&mb, 0);
mgos_conf_emit_cb(&mgos_sys_config, NULL, schema, false, &mb, NULL, NULL);