Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
card10
Companion App iOS
Commits
b6be7697
Commit
b6be7697
authored
Jun 21, 2020
by
Thomas Mellenthin
Browse files
Merge branch 'devel-melle' into 'master'
fix crc32 calculation See merge request
!19
parents
ee9f76c8
7f0ea23e
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
543 additions
and
456 deletions
+543
-456
Podfile.lock
Podfile.lock
+2
-2
Pods/Pods.xcodeproj/project.pbxproj
Pods/Pods.xcodeproj/project.pbxproj
+436
-431
Pods/Target Support Files/BitByteData/BitByteData.debug.xcconfig
...rget Support Files/BitByteData/BitByteData.debug.xcconfig
+10
-0
Pods/Target Support Files/BitByteData/BitByteData.release.xcconfig
...et Support Files/BitByteData/BitByteData.release.xcconfig
+10
-0
Pods/Target Support Files/Pods-card10badge/Pods-card10badge-frameworks.sh
...ort Files/Pods-card10badge/Pods-card10badge-frameworks.sh
+46
-10
Pods/Target Support Files/Pods-card10badge/Pods-card10badge.debug.xcconfig
...rt Files/Pods-card10badge/Pods-card10badge.debug.xcconfig
+1
-0
Pods/Target Support Files/Pods-card10badge/Pods-card10badge.release.xcconfig
... Files/Pods-card10badge/Pods-card10badge.release.xcconfig
+1
-0
Pods/Target Support Files/SWCompression/SWCompression.debug.xcconfig
... Support Files/SWCompression/SWCompression.debug.xcconfig
+11
-0
Pods/Target Support Files/SWCompression/SWCompression.release.xcconfig
...upport Files/SWCompression/SWCompression.release.xcconfig
+11
-0
card10badge/Bluetooth/DataTransferManager.swift
card10badge/Bluetooth/DataTransferManager.swift
+6
-12
card10badge/Bluetooth/UInt+Extension.swift
card10badge/Bluetooth/UInt+Extension.swift
+6
-0
card10badge/Hatchery/HatcheryDetailViewController.swift
card10badge/Hatchery/HatcheryDetailViewController.swift
+1
-1
card10badge/Info.plist
card10badge/Info.plist
+2
-0
No files found.
Podfile.lock
View file @
b6be7697
...
...
@@ -43,7 +43,7 @@ DEPENDENCIES:
- SWCompression (~> 4.5)
SPEC REPOS:
https://github.com/cocoapods/specs.git
:
trunk
:
- BitByteData
- SWCompression
...
...
@@ -53,4 +53,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 077e805b5b1ed363ea94dd5488aba3e01f60fd7c
COCOAPODS: 1.
7.5
COCOAPODS: 1.
9.1
Pods/Pods.xcodeproj/project.pbxproj
View file @
b6be7697
This diff is collapsed.
Click to expand it.
Pods/Target Support Files/BitByteData/BitByteData.debug.xcconfig
0 → 100644
View file @
b6be7697
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BitByteData
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/BitByteData
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Pods/Target Support Files/BitByteData/BitByteData.release.xcconfig
0 → 100644
View file @
b6be7697
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BitByteData
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/BitByteData
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Pods/Target Support Files/Pods-card10badge/Pods-card10badge-frameworks.sh
View file @
b6be7697
...
...
@@ -46,8 +46,8 @@ install_framework()
fi
# Use filter instead of exclude so missing patterns don't throw errors.
echo
"rsync --delete -av "
${
RSYNC_PROTECT_TMP_FILES
[@]
}
" --filter
\"
- CVS/
\"
--filter
\"
- .svn/
\"
--filter
\"
- .git/
\"
--filter
\"
- .hg/
\"
--filter
\"
- Headers
\"
--filter
\"
- PrivateHeaders
\"
--filter
\"
- Modules
\"
\"
${
source
}
\"
\"
${
destination
}
\"
"
rsync
--delete
-av
"
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--filter
"- CVS/"
--filter
"- .svn/"
--filter
"- .git/"
--filter
"- .hg/"
--filter
"- Headers"
--filter
"- PrivateHeaders"
--filter
"- Modules"
"
${
source
}
"
"
${
destination
}
"
echo
"rsync --delete -av "
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--links
--filter
\"
- CVS/
\"
--filter
\"
- .svn/
\"
--filter
\"
- .git/
\"
--filter
\"
- .hg/
\"
--filter
\"
- Headers
\"
--filter
\"
- PrivateHeaders
\"
--filter
\"
- Modules
\"
\"
${
source
}
\"
\"
${
destination
}
\"
"
rsync
--delete
-av
"
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--links
--filter
"- CVS/"
--filter
"- .svn/"
--filter
"- .git/"
--filter
"- .hg/"
--filter
"- Headers"
--filter
"- PrivateHeaders"
--filter
"- Modules"
"
${
source
}
"
"
${
destination
}
"
local basename
basename
=
"
$(
basename
-s
.framework
"
$1
"
)
"
...
...
@@ -84,27 +84,29 @@ install_framework()
# Copies and strips a vendored dSYM
install_dsym
()
{
local source
=
"
$1
"
warn_missing_arch
=
${
2
:-
true
}
if
[
-r
"
$source
"
]
;
then
# Copy the dSYM into
a
the targets temp dir.
# Copy the dSYM into the targets temp dir.
echo
"rsync --delete -av "
${
RSYNC_PROTECT_TMP_FILES
[@]
}
" --filter
\"
- CVS/
\"
--filter
\"
- .svn/
\"
--filter
\"
- .git/
\"
--filter
\"
- .hg/
\"
--filter
\"
- Headers
\"
--filter
\"
- PrivateHeaders
\"
--filter
\"
- Modules
\"
\"
${
source
}
\"
\"
${
DERIVED_FILES_DIR
}
\"
"
rsync
--delete
-av
"
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--filter
"- CVS/"
--filter
"- .svn/"
--filter
"- .git/"
--filter
"- .hg/"
--filter
"- Headers"
--filter
"- PrivateHeaders"
--filter
"- Modules"
"
${
source
}
"
"
${
DERIVED_FILES_DIR
}
"
local basename
basename
=
"
$(
basename
-s
.framework.dSYM
"
$source
"
)
"
binary
=
"
${
DERIVED_FILES_DIR
}
/
${
basename
}
.framework.dSYM/Contents/Resources/DWARF/
${
basename
}
"
basename
=
"
$(
basename
-s
.dSYM
"
$source
"
)
"
binary_name
=
"
$(
ls
"
$source
/Contents/Resources/DWARF"
)
"
binary
=
"
${
DERIVED_FILES_DIR
}
/
${
basename
}
.dSYM/Contents/Resources/DWARF/
${
binary_name
}
"
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if
[[
"
$(
file
"
$binary
"
)
"
==
*
"Mach-O "
*
"dSYM companion"
*
]]
;
then
strip_invalid_archs
"
$binary
"
strip_invalid_archs
"
$binary
"
"
$warn_missing_arch
"
fi
if
[[
$STRIP_BINARY_RETVAL
==
1
]]
;
then
# Move the stripped file into its final destination.
echo
"rsync --delete -av "
${
RSYNC_PROTECT_TMP_FILES
[@]
}
" --filter
\"
- CVS/
\"
--filter
\"
- .svn/
\"
--filter
\"
- .git/
\"
--filter
\"
- .hg/
\"
--filter
\"
- Headers
\"
--filter
\"
- PrivateHeaders
\"
--filter
\"
- Modules
\"
\"
${
DERIVED_FILES_DIR
}
/
${
basename
}
.framework.dSYM
\"
\"
${
DWARF_DSYM_FOLDER_PATH
}
\"
"
rsync
--delete
-av
"
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--filter
"- CVS/"
--filter
"- .svn/"
--filter
"- .git/"
--filter
"- .hg/"
--filter
"- Headers"
--filter
"- PrivateHeaders"
--filter
"- Modules"
"
${
DERIVED_FILES_DIR
}
/
${
basename
}
.
framework.
dSYM"
"
${
DWARF_DSYM_FOLDER_PATH
}
"
echo
"rsync --delete -av "
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--links
--filter
\"
- CVS/
\"
--filter
\"
- .svn/
\"
--filter
\"
- .git/
\"
--filter
\"
- .hg/
\"
--filter
\"
- Headers
\"
--filter
\"
- PrivateHeaders
\"
--filter
\"
- Modules
\"
\"
${
DERIVED_FILES_DIR
}
/
${
basename
}
.framework.dSYM
\"
\"
${
DWARF_DSYM_FOLDER_PATH
}
\"
"
rsync
--delete
-av
"
${
RSYNC_PROTECT_TMP_FILES
[@]
}
"
--links
--filter
"- CVS/"
--filter
"- .svn/"
--filter
"- .git/"
--filter
"- .hg/"
--filter
"- Headers"
--filter
"- PrivateHeaders"
--filter
"- Modules"
"
${
DERIVED_FILES_DIR
}
/
${
basename
}
.dSYM"
"
${
DWARF_DSYM_FOLDER_PATH
}
"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
touch
"
${
DWARF_DSYM_FOLDER_PATH
}
/
${
basename
}
.
framework.
dSYM"
touch
"
${
DWARF_DSYM_FOLDER_PATH
}
/
${
basename
}
.dSYM"
fi
fi
}
...
...
@@ -135,13 +137,16 @@ code_sign_if_enabled() {
# Strip invalid architectures
strip_invalid_archs
()
{
binary
=
"
$1
"
warn_missing_arch
=
${
2
:-
true
}
# Get architectures for current target binary
binary_archs
=
"
$(
lipo
-info
"
$binary
"
| rev |
cut
-d
':'
-f1
|
awk
'{$1=$1;print}'
| rev
)
"
# Intersect them with the architectures we are building for
intersected_archs
=
"
$(
echo
${
ARCHS
[@]
}
${
binary_archs
[@]
}
|
tr
' '
'\n'
|
sort
|
uniq
-d
)
"
# If there are no archs supported by this binary then warn the user
if
[[
-z
"
$intersected_archs
"
]]
;
then
echo
"warning: [CP] Vendored binary '
$binary
' contains architectures (
$binary_archs
) none of which match the current build architectures (
$ARCHS
)."
if
[[
"
$warn_missing_arch
"
==
"true"
]]
;
then
echo
"warning: [CP] Vendored binary '
$binary
' contains architectures (
$binary_archs
) none of which match the current build architectures (
$ARCHS
)."
fi
STRIP_BINARY_RETVAL
=
0
return
fi
...
...
@@ -159,6 +164,37 @@ strip_invalid_archs() {
STRIP_BINARY_RETVAL
=
1
}
install_artifact
()
{
artifact
=
"
$1
"
base
=
"
$(
basename
"
$artifact
"
)
"
case
$base
in
*
.framework
)
install_framework
"
$artifact
"
;;
*
.dSYM
)
# Suppress arch warnings since XCFrameworks will include many dSYM files
install_dsym
"
$artifact
"
"false"
;;
*
.bcsymbolmap
)
install_bcsymbolmap
"
$artifact
"
;;
*
)
echo
"error: Unrecognized artifact "
$artifact
""
;;
esac
}
copy_artifacts
()
{
file_list
=
"
$1
"
while
read
artifact
;
do
install_artifact
"
$artifact
"
done
<
$file_list
}
ARTIFACT_LIST_FILE
=
"
${
BUILT_PRODUCTS_DIR
}
/cocoapods-artifacts-
${
CONFIGURATION
}
.txt"
if
[
-r
"
${
ARTIFACT_LIST_FILE
}
"
]
;
then
copy_artifacts
"
${
ARTIFACT_LIST_FILE
}
"
fi
if
[[
"
$CONFIGURATION
"
==
"Debug"
]]
;
then
install_framework
"
${
BUILT_PRODUCTS_DIR
}
/BitByteData/BitByteData.framework"
...
...
Pods/Target Support Files/Pods-card10badge/Pods-card10badge.debug.xcconfig
View file @
b6be7697
...
...
@@ -9,3 +9,4 @@ PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Pods/Target Support Files/Pods-card10badge/Pods-card10badge.release.xcconfig
View file @
b6be7697
...
...
@@ -9,3 +9,4 @@ PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Pods/Target Support Files/SWCompression/SWCompression.debug.xcconfig
0 → 100644
View file @
b6be7697
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SWCompression
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BitByteData"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DSWCOMPRESSION_POD_BZ2 -DSWCOMPRESSION_POD_DEFLATE -DSWCOMPRESSION_POD_LZMA -DSWCOMPRESSION_POD_SEVENZIP -DSWCOMPRESSION_POD_ZIP
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/SWCompression
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Pods/Target Support Files/SWCompression/SWCompression.release.xcconfig
0 → 100644
View file @
b6be7697
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SWCompression
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BitByteData"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DSWCOMPRESSION_POD_BZ2 -DSWCOMPRESSION_POD_DEFLATE -DSWCOMPRESSION_POD_LZMA -DSWCOMPRESSION_POD_SEVENZIP -DSWCOMPRESSION_POD_ZIP
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/SWCompression
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
card10badge/Bluetooth/DataTransferManager.swift
View file @
b6be7697
...
...
@@ -51,6 +51,7 @@ class DataTransferManager: NSObject {
var
lastPackageSentAt
:
TimeInterval
?
var
dataToSend
:
Data
?
var
currentChunkToSend
:
Data
?
var
currentChunkToSendCrc32
:
UInt32
=
0
var
retryCount
:
Int
=
0
init
(
_
delegateToUse
:
DataTransferManagerDelegate
)
{
...
...
@@ -78,7 +79,7 @@ class DataTransferManager: NSObject {
case
.
CHUNK_ACK
?:
self
.
transferState
=
.
CHUNK_SENT
// calculate CRC and send new chunk
let
range
:
Range
<
Data
.
Index
>
=
0
..<
1
let
range
:
Range
<
Data
.
Index
>
=
1
..<
5
let
crc
=
package
.
subdata
(
in
:
range
)
updateProgress
()
if
checkChunkWithResponse
(
crc
)
{
...
...
@@ -156,6 +157,8 @@ class DataTransferManager: NSObject {
var
int
=
UInt32
(
bigEndian
:
UInt32
(
offset
))
payloadToSend
?
.
append
(
Data
(
bytes
:
&
int
,
count
:
MemoryLayout
.
size
(
ofValue
:
UInt32
())))
payloadToSend
?
.
append
(
payload
!
)
// pre-calculate the expected CRC sum for that packet (must include header and offset)
currentChunkToSendCrc32
=
CRC32
.
checksum
(
bytes
:
payloadToSend
!.
bytes
)
lastPackageSentAt
=
NSDate
.
init
()
.
timeIntervalSinceNow
case
.
CHUNK_ACK
:
...
...
@@ -181,17 +184,8 @@ class DataTransferManager: NSObject {
}
func
checkChunkWithResponse
(
_
response
:
Data
)
->
Bool
{
return
true
//FIXME: This CRC32 implementation doesn't work. Disabled for now
let
responseInUInt32
=
response
.
withUnsafeBytes
{
$0
.
load
(
as
:
UInt8
.
self
)
}
let
chunkInUInt8
=
[
UInt8
](
self
.
currentChunkToSend
!
)
let
checksum
=
CRC32
.
checksum
(
bytes
:
chunkInUInt8
)
if
responseInUInt32
==
checksum
{
return
true
}
return
false
// compares received crc32 with the previously calculated checksum
return
response
.
withUnsafeBytes
{
$0
.
load
(
as
:
UInt32
.
self
)
}
==
currentChunkToSendCrc32
}
func
updateProgress
()
{
...
...
card10badge/Bluetooth/UInt+Extension.swift
View file @
b6be7697
...
...
@@ -21,3 +21,9 @@ extension isDataInt {
extension
UInt16
:
isDataInt
{
}
extension
UInt64
:
isDataInt
{
}
extension
Data
{
var
bytes
:
[
UInt8
]
{
return
[
UInt8
](
self
)
}
}
card10badge/Hatchery/HatcheryDetailViewController.swift
View file @
b6be7697
...
...
@@ -17,7 +17,7 @@ class HatcheryDetailViewController: UIViewController, HatcheryClientDelegate, Bl
public
var
eggToShow
:
HatcheryEgg
?
private
var
client
:
HatcheryClient
?
private
var
filesToTransfer
:
Array
<
DataToTransfer
>
=
[]
private
var
filesToTransfer
:
[
DataToTransfer
]
=
[]
private
var
uploadAlert
:
UIAlertController
?
private
var
progressBar
:
UIProgressView
?
...
...
card10badge/Info.plist
View file @
b6be7697
...
...
@@ -22,6 +22,8 @@
<true/>
<key>
NSBluetoothPeripheralUsageDescription
</key>
<string>
The app needs bluetooth to connect to your card10 badge
</string>
<key>
NSBluetoothAlwaysUsageDescription
</key>
<string>
The app needs bluetooth to connect to your card10 badge
</string>
<key>
UILaunchStoryboardName
</key>
<string>
LaunchScreen
</string>
<key>
UIMainStoryboardFile
</key>
...
...
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