Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nRF52_BLE_LED
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zet
nRF52_BLE_LED
Commits
e89beafd
Commit
e89beafd
authored
May 31, 2017
by
zet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use LCD
parent
0aa53ec5
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
342 additions
and
11 deletions
+342
-11
install.sh
install.sh
+2
-2
mbed_settings.py
mbed_settings.py
+45
-0
source/LEDService.h
source/LEDService.h
+1
-1
source/TextLCD.cpp
source/TextLCD.cpp
+159
-0
source/TextLCD.h
source/TextLCD.h
+111
-0
source/main.cpp
source/main.cpp
+24
-8
No files found.
install.sh
View file @
e89beafd
...
...
@@ -9,7 +9,7 @@ if [ $(which virtualenv2) ]; then
else
VIRTUALENV
=
"virtualenv"
fi
$VIRTUALENV
venv
source
venv/bin/activate
$VIRTUALENV
mbed-
venv
source
mbed-
venv/bin/activate
$PIP
install
--upgrade
mbed-cli
mbed_settings.py
0 → 100644
View file @
e89beafd
"""
mbed SDK
Copyright (c) 2016 ARM Limited
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from
os.path
import
join
,
abspath
,
dirname
#ROOT = abspath(join(dirname(__file__), "."))
##############################################################################
# Build System Settings
##############################################################################
#BUILD_DIR = abspath(join(ROOT, "build"))
# ARM
#ARM_PATH = "C:/Program Files/ARM"
# GCC ARM
#GCC_ARM_PATH = ""
# GCC CodeRed
#GCC_CR_PATH = "C:/code_red/RedSuite_4.2.0_349/redsuite/Tools/bin"
# IAR
#IAR_PATH = "C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.0/arm"
# Goanna static analyser. Please overload it in private_settings.py
#GOANNA_PATH = "c:/Program Files (x86)/RedLizards/Goanna Central 3.2.3/bin"
#BUILD_OPTIONS = []
# mbed.org username
#MBED_ORG_USER = ""
source/LEDService.h
View file @
e89beafd
...
...
@@ -25,7 +25,7 @@ public:
LEDService
(
BLEDevice
&
_ble
,
bool
initialValueForLEDCharacteristic
)
:
ble
(
_ble
),
ledState
(
LED_STATE_CHARACTERISTIC_UUID
,
&
initialValueForLEDCharacteristic
)
{
//
ledState.requireSecurity(SecurityManager::SECURITY_MODE_ENCRYPTION_WITH_MITM);
ledState
.
requireSecurity
(
SecurityManager
::
SECURITY_MODE_ENCRYPTION_WITH_MITM
);
GattCharacteristic
*
charTable
[]
=
{
&
ledState
};
GattService
ledService
(
LED_SERVICE_UUID
,
charTable
,
sizeof
(
charTable
)
/
sizeof
(
GattCharacteristic
*
));
ble
.
addService
(
ledService
);
...
...
source/TextLCD.cpp
0 → 100644
View file @
e89beafd
/* mbed TextLCD Library, for a 4-bit LCD based on HD44780
* Copyright (c) 2007-2010, sford, http://mbed.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "TextLCD.h"
#include "mbed.h"
TextLCD
::
TextLCD
(
PinName
rs
,
PinName
e
,
PinName
d4
,
PinName
d5
,
PinName
d6
,
PinName
d7
,
LCDType
type
)
:
_rs
(
rs
),
_e
(
e
),
_d
(
d4
,
d5
,
d6
,
d7
),
_type
(
type
)
{
_e
=
1
;
_rs
=
0
;
// command mode
wait
(
0.015
);
// Wait 15ms to ensure powered up
// send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus)
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
writeByte
(
0x3
);
wait
(
0.00164
);
// this command takes 1.64ms, so wait for it
}
writeByte
(
0x2
);
// 4-bit mode
wait
(
0.000040
f
);
// most instructions take 40us
writeCommand
(
0x28
);
// Function set 001 BW N F - -
writeCommand
(
0x0C
);
writeCommand
(
0x6
);
// Cursor Direction and Display Shift : 0000 01 CD S (CD 0-left, 1-right S(hift) 0-no, 1-yes
cls
();
}
void
TextLCD
::
character
(
int
column
,
int
row
,
int
c
)
{
int
a
=
address
(
column
,
row
);
writeCommand
(
a
);
writeData
(
c
);
}
void
TextLCD
::
cls
()
{
writeCommand
(
0x01
);
// cls, and set cursor to 0
wait
(
0.00164
f
);
// This command takes 1.64 ms
locate
(
0
,
0
);
}
void
TextLCD
::
locate
(
int
column
,
int
row
)
{
_column
=
column
;
_row
=
row
;
}
int
TextLCD
::
_putc
(
int
value
)
{
if
(
value
==
'\n'
)
{
_column
=
0
;
_row
++
;
if
(
_row
>=
rows
())
{
_row
=
0
;
}
}
else
{
character
(
_column
,
_row
,
value
);
_column
++
;
if
(
_column
>=
columns
())
{
_column
=
0
;
_row
++
;
if
(
_row
>=
rows
())
{
_row
=
0
;
}
}
}
return
value
;
}
int
TextLCD
::
_getc
()
{
return
-
1
;
}
void
TextLCD
::
writeByte
(
int
value
)
{
_d
=
value
>>
4
;
wait
(
0.000040
f
);
// most instructions take 40us
_e
=
0
;
wait
(
0.000040
f
);
_e
=
1
;
_d
=
value
>>
0
;
wait
(
0.000040
f
);
_e
=
0
;
wait
(
0.000040
f
);
// most instructions take 40us
_e
=
1
;
}
void
TextLCD
::
writeCommand
(
int
command
)
{
_rs
=
0
;
writeByte
(
command
);
}
void
TextLCD
::
writeData
(
int
data
)
{
_rs
=
1
;
writeByte
(
data
);
}
int
TextLCD
::
address
(
int
column
,
int
row
)
{
switch
(
_type
)
{
case
LCD20x4
:
switch
(
row
)
{
case
0
:
return
0x80
+
column
;
case
1
:
return
0xc0
+
column
;
case
2
:
return
0x94
+
column
;
case
3
:
return
0xd4
+
column
;
}
case
LCD16x2B
:
return
0x80
+
(
row
*
40
)
+
column
;
case
LCD16x2
:
case
LCD20x2
:
default:
return
0x80
+
(
row
*
0x40
)
+
column
;
}
}
int
TextLCD
::
columns
()
{
switch
(
_type
)
{
case
LCD20x4
:
case
LCD20x2
:
return
20
;
case
LCD16x2
:
case
LCD16x2B
:
default:
return
16
;
}
}
int
TextLCD
::
rows
()
{
switch
(
_type
)
{
case
LCD20x4
:
return
4
;
case
LCD16x2
:
case
LCD16x2B
:
case
LCD20x2
:
default:
return
2
;
}
}
source/TextLCD.h
0 → 100644
View file @
e89beafd
/* mbed TextLCD Library, for a 4-bit LCD based on HD44780
* Copyright (c) 2007-2010, sford, http://mbed.org
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef MBED_TEXTLCD_H
#define MBED_TEXTLCD_H
#include "mbed.h"
/** A TextLCD interface for driving 4-bit HD44780-based LCDs
*
* Currently supports 16x2, 20x2 and 20x4 panels
*
* @code
* #include "mbed.h"
* #include "TextLCD.h"
*
* TextLCD lcd(p10, p12, p15, p16, p29, p30); // rs, e, d4-d7
*
* int main() {
* lcd.printf("Hello World!\n");
* }
* @endcode
*/
class
TextLCD
:
public
Stream
{
public:
/** LCD panel format */
enum
LCDType
{
LCD16x2
/**< 16x2 LCD panel (default) */
,
LCD16x2B
/**< 16x2 LCD panel alternate addressing */
,
LCD20x2
/**< 20x2 LCD panel */
,
LCD20x4
/**< 20x4 LCD panel */
};
/** Create a TextLCD interface
*
* @param rs Instruction/data control line
* @param e Enable line (clock)
* @param d4-d7 Data lines for using as a 4-bit interface
* @param type Sets the panel size/addressing mode (default = LCD16x2)
*/
TextLCD
(
PinName
rs
,
PinName
e
,
PinName
d4
,
PinName
d5
,
PinName
d6
,
PinName
d7
,
LCDType
type
=
LCD16x2
);
#if DOXYGEN_ONLY
/** Write a character to the LCD
*
* @param c The character to write to the display
*/
int
putc
(
int
c
);
/** Write a formated string to the LCD
*
* @param format A printf-style format string, followed by the
* variables to use in formating the string.
*/
int
printf
(
const
char
*
format
,
...);
#endif
/** Locate to a screen column and row
*
* @param column The horizontal position from the left, indexed from 0
* @param row The vertical position from the top, indexed from 0
*/
void
locate
(
int
column
,
int
row
);
/** Clear the screen and locate to 0,0 */
void
cls
();
int
rows
();
int
columns
();
protected:
// Stream implementation functions
virtual
int
_putc
(
int
value
);
virtual
int
_getc
();
int
address
(
int
column
,
int
row
);
void
character
(
int
column
,
int
row
,
int
c
);
void
writeByte
(
int
value
);
void
writeCommand
(
int
command
);
void
writeData
(
int
data
);
DigitalOut
_rs
,
_e
;
BusOut
_d
;
LCDType
_type
;
int
_column
;
int
_row
;
};
#endif
source/main.cpp
View file @
e89beafd
...
...
@@ -18,6 +18,10 @@
#include <mbed.h>
#include "ble/BLE.h"
#include "LEDService.h"
#include "TextLCD.h"
TextLCD
lcd
(
p15
,
p16
,
p22
,
p23
,
p24
,
p25
,
TextLCD
::
LCD16x2
);
// rs, e, d4-d7
//debug output
//Serial pc(USBTX, USBRX); // tx, rx
...
...
@@ -40,11 +44,15 @@ LEDService *ledServicePtr;
void
connectionCallback
(
const
Gap
::
ConnectionCallbackParams_t
*
params
)
{
//printf("Connected!\r\n");
lcd
.
locate
(
0
,
0
);
lcd
.
printf
(
"Connected! "
);
}
void
disconnectionCallback
(
const
Gap
::
DisconnectionCallbackParams_t
*
params
)
{
//printf("Disconnected!\r\n");
lcd
.
locate
(
0
,
0
);
lcd
.
printf
(
"Disconnected! "
);
(
void
)
params
;
BLE
::
Instance
().
gap
().
startAdvertising
();
}
...
...
@@ -56,19 +64,24 @@ void blinkCallback(void)
void
passkeyDisplayCallback
(
Gap
::
Handle_t
handle
,
const
SecurityManager
::
Passkey_t
passkey
)
{
printf
(
"[*] Input passKey: "
);
lcd
.
locate
(
0
,
1
);
lcd
.
printf
(
"Key: "
);
for
(
unsigned
i
=
0
;
i
<
Gap
::
ADDR_LEN
;
i
++
)
{
printf
(
"%c
"
,
passkey
[
i
]);
lcd
.
printf
(
"%c
"
,
passkey
[
i
]);
}
printf
(
"
\r\n
"
);
//
printf("\r\n");
}
void
securitySetupCompletedCallback
(
Gap
::
Handle_t
handle
,
SecurityManager
::
SecurityCompletionStatus_t
status
)
{
if
(
status
==
SecurityManager
::
SEC_STATUS_SUCCESS
)
{
//printf("[+] Security success\r\n");
lcd
.
locate
(
0
,
0
);
lcd
.
printf
(
"[+]Sec success"
);
}
else
{
//printf("[!] Security failed\r\n");
lcd
.
locate
(
0
,
0
);
lcd
.
printf
(
"[!]Security failed"
);
}
}
...
...
@@ -114,15 +127,15 @@ void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
}
/* Initialize BLE security */
//
bool enableBonding = true;
//
bool requireMITM = true;
//
ble.securityManager().init(enableBonding, requireMITM, SecurityManager::IO_CAPS_DISPLAY_ONLY);
bool
enableBonding
=
true
;
bool
requireMITM
=
true
;
ble
.
securityManager
().
init
(
enableBonding
,
requireMITM
,
SecurityManager
::
IO_CAPS_DISPLAY_ONLY
);
/* Set callback functions */
ble
.
gap
().
onConnection
(
connectionCallback
);
ble
.
gap
().
onDisconnection
(
disconnectionCallback
);
//
ble.securityManager().onPasskeyDisplay(passkeyDisplayCallback);
//
ble.securityManager().onSecuritySetupCompleted(securitySetupCompletedCallback);
ble
.
securityManager
().
onPasskeyDisplay
(
passkeyDisplayCallback
);
ble
.
securityManager
().
onSecuritySetupCompleted
(
securitySetupCompletedCallback
);
ble
.
gattServer
().
onDataWritten
(
onDataWrittenCallback
);
bool
initialValueForLEDCharacteristic
=
false
;
...
...
@@ -150,6 +163,9 @@ int main()
ble
.
onEventsToProcess
(
scheduleBleEventsProcessing
);
ble
.
init
(
bleInitComplete
);
//printf("[*] system start ..... \r\n");
//lcd.locate(0, 0);
lcd
.
printf
(
"[*]fuckin start"
);
eventQueue
.
dispatch_forever
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment