20160808_jeffrey - silenceuncrio/diary GitHub Wiki
- 0925 - review
- 1000 - 整理 GitHub Index
- 1030 - engineering notebook
- 1055 - VirtualBox scp
- 1410 - CGI Class 101 - cgi_1
- 1450 - CGI Class 101 - cgi_2
- 1505 - m300 webui
- 1530 - bootstrap template
- 1735 - MfgTool 多 USB Port 被 否決
review
整理上禮拜 GitHub 的 Index
寫 engineering notebook
VirtualBox m300_ubuntu_15
- 關機後修改網路的設定
- 介面卡 3
- 附加到 橋接介面卡
- 名稱 - DM9621 USB To Fast Ethernet Adapter(KMDF)
開機
jeffrey@jeffrey-VirtualBox:~$ ifconfig
enp0s9 Link encap:Ethernet HWaddr 08:00:27:c1:5a:32
inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fec1:5a32/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1795 (1.7 KB) TX bytes:9920 (9.9 KB)
這樣我的 m300_ubuntu_15
便可以直接透過 USB 網卡 利用 scp
將 build 好的 cgi 傳到 M300 去
jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/proscend/prosrc/webcgi$ scp class_101.cgi [email protected]:/www/cgi-bin
[email protected]'s password:
class_101.cgi 100% 10KB 10.4KB/s 00:00
jeffrey@jeffrey-VirtualBox:~/M300/fsl-release-bsp/proscend/prosrc/webcgi$
效率高了不少
CGI Class 101 目前進度如下
Makefile
################################################################################
# CGI Class 101
################################################################################
CLASS_101 :=
CLASS_101 += class_101.cgi_1 class_102.cgi_1 class_103.cgi_1 class_104.cgi_1
CLASS_201 :=
CLASS_201 += class_201.cgi_2 class_202.cgi_2 class_203.cgi_2
cgi_1: $(CLASS_101)
cgi_2: $(CLASS_201)
%.cgi_1: %.o
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -licos -lcgi -ljson-c
$(STRIP) $@
%.cgi_2: %.o class_lib.o
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< class_lib.o -licos -lcgi -ljson-c
$(STRIP) $@
clean_class:
@rm -f *~ *.o *.map *.bak
@rm -rf *.cgi_1 *.cgi_2
先從最基本的 cgi_1
開始
最基本的 printf output
注意 HTML Header 與 content 之間需要 2 個 \r\n
#include <stdio.h>
int main(void) {
printf("Content-Type: text/html\n\n");
printf("<h1>Hello M300 Team</h1>\n");
return 0;
}
###class_102.c
認識基本的 CGI 環境變數
#include <stdio.h>
extern char **environ;
int main() {
char **p = environ;
printf("Content-Type: text/html\r\n\r\n");
printf("<html> <head>\n");
printf("<title>CGI Environment</title>\n");
printf("</head>\n");
printf("<body>\n");
printf("<h1>CGI Environment</h1>\n");
while(*p != NULL) {
printf("%s<br>\n",*p++);
}
printf("</body> </html>\n");
return 0;
}
###class_103.c
學習使用 CGI Library - LibCGI
#include <stdio.h>
#include <cgi.h>
s_cgi *cgi;
int main(void) {
cgi = cgiInit();
cgiHeader();
printf("<h1>Hello M300 Team - with cgi library</h1>\n");
cgiFree(cgi);
return 0;
}
###class_104.c
學習使用 JSON Library - JSON-C
#include <stdio.h>
#include <cgi.h>
#include <json-c/json.h>
s_cgi *cgi;
json_object *jobj;
int main(void) {
cgi = cgiInit();
cgiSetType("application/json");
cgiHeader();
jobj = json_object_new_object();
json_object_object_add(jobj, "info", json_object_new_string("Hello M300 Team"));
printf("%s", json_object_to_json_string(jobj));
json_object_put(jobj);
cgiFree (cgi);
return 0;
}
cgi_2 開始導入 class_lib.c
希望把比較共通的 function 整理在一起
###class_201.c
需要 include 的 header 統一整理在 class_lib.h
#include "class_lib.h"
int main(void) {
init();
json_object_object_add(jobj, "info", json_object_new_string("Hello M300 Team"));
printf("%s", json_object_to_json_string(jobj));
done();
}
class_201.c
便是使用 class_lib
的 class_104.c
###class_202.c
base on class_201.c
更進一步化簡 JSON-C library 的使用方式
#include "class_lib.h"
int main(void) {
init();
in_string("info", "Hello M300 Team");
out_done();
}
###class_203.c
使用 icos API 得到一個 LTE_CONN
結構的資訊
轉成適當的 JSON format 再作輸出
#include "class_lib.h"
int main() {
init();
LTE_CONN *lte_shm = ICOS_shm_status_getPtr(SHM_LTE);
in_int("main_sim", lte_shm->main_sim);
in_int("roaming_switch", lte_shm->roaming_switch);
in_int("data_exceed_idx", lte_shm->data_exceed_idx);
in_string("modem_firmware", lte_shm->modem_firmware);
out_done();
}
未來就是希望用這樣的形式來將 icos API 封裝成 RESTful API 的形式提供 web 或 mobile APP使用
試著參考 m300_webui.pdf 先來做個 status
有點想要挑戰一下不用 frameset 來實作 m300 的 web
google bootstrap template
一堆範本可以用
-
WrapBootstrap
- 有在賣 theme
-
Start Bootstrap
- 免費的 theme
google bootstrap admin
- 20 Free Bootstrap 3 Admin Dashboard Templates For Your Web App 2016
- 20 Free & Premium Bootstrap Admin HTML5 Templates
- 15 Free Bootstrap Admin & Dashboard Themes
一堆免費的可以參考
好好抓著 bootstrap 吧
ariel 告知為了 MfgTool 燒錄 code 要多一個 USB Port 這件事被 上層 否決了
明天再找 winston 聊一下看看怎麼讓複雜的燒錄動作變簡單吧